diff --git a/.blackboxrules b/.blackboxrules index 6125caa..af4572e 100644 --- a/.blackboxrules +++ b/.blackboxrules @@ -23,10 +23,10 @@ A pipeline file has three main sections: #### Domain Statement ```plx -domain = "domain_name" +domain = "domain_code" description = "Description of the domain" # Optional ``` -Note: The domain name usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. +Note: The domain code usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. #### Concept Definitions @@ -62,7 +62,7 @@ For details on how to structure concepts with fields, see the "Structuring Model ### Pipe Base Definition ```plx -[pipe.your_pipe_name] +[pipe.your_pipe_code] type = "PipeLLM" description = "A description of what your pipe does" inputs = { input_1 = "ConceptName1", input_2 = "ConceptName2" } @@ -471,7 +471,7 @@ The PipeExtract operator is used to extract text and images from an image or a P [pipe.extract_info] type = "PipeExtract" description = "extract the information" -inputs = { document = "PDF" } # or { image = "Image" } if it's an image. This is the only input. +inputs = { document = "Document" } # or { image = "Image" } if it's an image. This is the only input. output = "Page" ``` @@ -480,7 +480,7 @@ Using Extract Model Settings: [pipe.extract_with_model] type = "PipeExtract" description = "Extract with specific model" -inputs = { document = "PDF" } +inputs = { document = "Document" } output = "Page" model = "base_extract_mistral" # Use predefined extract preset or model alias ``` @@ -588,15 +588,16 @@ $sales_rep.phone | $sales_rep.email """ ``` -#### Key Parameters +#### Key Parameters (Template Mode) -- `template`: Inline template string (mutually exclusive with template_name) +- `template`: Inline template string (mutually exclusive with template_name and construct) - `template_name`: Name of a predefined template (mutually exclusive with template) - `template_category`: Template type ("llm_prompt", "html", "markdown", "mermaid", etc.) - `templating_style`: Styling options for template rendering - `extra_context`: Additional context variables for template For more control, you can use a nested `template` section instead of the `template` field: + - `template.template`: The template string - `template.category`: Template type - `template.templating_style`: Styling options @@ -604,9 +605,143 @@ For more control, you can use a nested `template` section instead of the `templa #### Template Variables Use the same variable insertion rules as PipeLLM: + - `@variable` for block insertion (multi-line content) - `$variable` for inline insertion (short text) +#### Construct Mode (for StructuredContent Output) + +PipeCompose can also generate `StructuredContent` objects using the `construct` section. This mode composes field values from fixed values, variable references, templates, or nested structures. + +**When to use construct mode:** + +- You need to output a structured object (not just Text) +- You want to deterministically compose fields from existing data +- No LLM is needed - just data composition and templating + +##### Basic Construct Usage + +```plx +[concept.SalesSummary] +description = "A structured sales summary" + +[concept.SalesSummary.structure] +report_title = { type = "text", description = "Title of the report" } +customer_name = { type = "text", description = "Customer name" } +deal_value = { type = "number", description = "Deal value" } +summary_text = { type = "text", description = "Generated summary text" } + +[pipe.compose_summary] +type = "PipeCompose" +description = "Compose a sales summary from deal data" +inputs = { deal = "Deal" } +output = "SalesSummary" + +[pipe.compose_summary.construct] +report_title = "Monthly Sales Report" +customer_name = { from = "deal.customer_name" } +deal_value = { from = "deal.amount" } +summary_text = { template = "Deal worth $deal.amount with $deal.customer_name" } +``` + +##### Field Composition Methods + +There are four ways to define field values in a construct: + +**1. Fixed Value (literal)** + +Use a literal value directly: + +```plx +[pipe.compose_report.construct] +report_title = "Annual Report" +report_year = 2024 +is_draft = false +``` + +**2. Variable Reference (`from`)** + +Get a value from working memory using a dotted path: + +```plx +[pipe.compose_report.construct] +customer_name = { from = "deal.customer_name" } +total_amount = { from = "order.total" } +street_address = { from = "customer.address.street" } +``` + +**3. Template (`template`)** + +Render a Jinja2 template with variable substitution: + +```plx +[pipe.compose_report.construct] +invoice_number = { template = "INV-$order.id" } +summary = { template = "Deal worth $deal.amount with $deal.customer_name on {{ current_date }}" } +``` + +**4. Nested Construct** + +For nested structures, use a TOML subsection: + +```plx +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +##### Complete Construct Example + +```plx +domain = "invoicing" + +[concept.Address] +description = "A postal address" + +[concept.Address.structure] +street = { type = "text", description = "Street address" } +city = { type = "text", description = "City name" } +country = { type = "text", description = "Country name" } + +[concept.Invoice] +description = "An invoice document" + +[concept.Invoice.structure] +invoice_number = { type = "text", description = "Invoice number" } +total = { type = "number", description = "Total amount" } + +[pipe.compose_invoice] +type = "PipeCompose" +description = "Compose an invoice from order and customer data" +inputs = { order = "Order", customer = "Customer" } +output = "Invoice" + +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +##### Key Parameters (Construct Mode) + +- `construct`: Dictionary mapping field names to their composition rules +- Each field can be: + - A literal value (string, number, boolean) + - A dict with `from` key for variable reference + - A dict with `template` key for template rendering + - A nested dict for nested structures + +**Note:** You must use either `template` or `construct`, not both. They are mutually exclusive. + ### PipeImgGen operator The PipeImgGen operator is used to generate images using AI image generation models. @@ -952,13 +1087,13 @@ So here are a few concrete examples of calls to execute_pipeline with various wa }, ) -## Here we have a single input and it's a PDF. -## Because PDFContent is a native concept, we can use it directly as a value, +## Here we have a single input and it's a document. +## Because DocumentContent is a native concept, we can use it directly as a value, ## the system knows what content it corresponds to: pipe_output = await execute_pipeline( pipe_code="power_extractor_dpe", inputs={ - "document": PDFContent(url=pdf_url), + "document": DocumentContent(url=pdf_url), }, ) @@ -1081,82 +1216,4 @@ result_list = pipe_output.main_stuff_as_items(item_type=GanttChart) ``` --- - -## Rules to choose LLM models used in PipeLLMs. - -### LLM Configuration System - -In order to use it in a pipe, an LLM is referenced by its llm_handle (alias) and possibly by an llm_preset. -LLM configurations are managed through the new inference backend system with files located in `.pipelex/inference/`: - -- **Model Deck**: `.pipelex/inference/deck/base_deck.toml` and `.pipelex/inference/deck/overrides.toml` -- **Backends**: `.pipelex/inference/backends.toml` and `.pipelex/inference/backends/*.toml` -- **Routing**: `.pipelex/inference/routing_profiles.toml` - -### LLM Handles - -An llm_handle can be either: -1. **A direct model name** (like "gpt-4o-mini", "claude-3-sonnet") - automatically available for all models loaded by the inference backend system -2. **An alias** - user-defined shortcuts that map to model names, defined in the `[aliases]` section: - -```toml -[aliases] -base-claude = "claude-4.5-sonnet" -base-gpt = "gpt-5" -base-gemini = "gemini-2.5-flash" -base-mistral = "mistral-medium" -``` - -The system first looks for direct model names, then checks aliases if no direct match is found. The system handles model routing through backends automatically. - -### Using an LLM Handle in a PipeLLM - -Here is an example of using an llm_handle to specify which LLM to use in a PipeLLM: - -```plx -[pipe.hello_world] -type = "PipeLLM" -description = "Write text about Hello World." -output = "Text" -model = { model = "gpt-5", temperature = 0.9 } -prompt = """ -Write a haiku about Hello World. -""" -``` - -As you can see, to use the LLM, you must also indicate the temperature (float between 0 and 1) and max_tokens (either an int or the string "auto"). - -### LLM Presets - -Presets are meant to record the choice of an llm with its hyper parameters (temperature and max_tokens) if it's good for a particular task. LLM Presets are skill-oriented. - -Examples: -```toml -llm_to_engineer = { model = "base-claude", temperature = 1 } -llm_to_extract_invoice = { model = "claude-4.5-sonnet", temperature = 0.1, max_tokens = "auto" } -``` - -The interest is that these presets can be used to set the LLM choice in a PipeLLM, like this: - -```plx -[pipe.extract_invoice] -type = "PipeLLM" -description = "Extract invoice information from an invoice text transcript" -inputs = { invoice_text = "InvoiceText" } -output = "Invoice" -model = "llm_to_extract_invoice" -prompt = """ -Extract invoice information from this invoice: - -The category of this invoice is: $invoice_details.category. - -@invoice_text -""" -``` - -The setting here `model = "llm_to_extract_invoice"` works because "llm_to_extract_invoice" has been declared as an llm_preset in the deck. -You must not use an LLM preset in a PipeLLM that does not exist in the deck. If needed, you can add llm presets. - - -You can override the predefined llm presets by setting them in `.pipelex/inference/deck/overrides.toml`. diff --git a/.cursor/rules/run_pipelex.mdc b/.cursor/rules/run_pipelex.mdc index 8387838..7650051 100644 --- a/.cursor/rules/run_pipelex.mdc +++ b/.cursor/rules/run_pipelex.mdc @@ -99,13 +99,13 @@ So here are a few concrete examples of calls to execute_pipeline with various wa }, ) -# Here we have a single input and it's a PDF. -# Because PDFContent is a native concept, we can use it directly as a value, +# Here we have a single input and it's a document. +# Because DocumentContent is a native concept, we can use it directly as a value, # the system knows what content it corresponds to: pipe_output = await execute_pipeline( pipe_code="power_extractor_dpe", inputs={ - "document": PDFContent(url=pdf_url), + "document": DocumentContent(url=pdf_url), }, ) diff --git a/.cursor/rules/write_pipelex.mdc b/.cursor/rules/write_pipelex.mdc index 9f23faf..93422cc 100644 --- a/.cursor/rules/write_pipelex.mdc +++ b/.cursor/rules/write_pipelex.mdc @@ -27,10 +27,10 @@ A pipeline file has three main sections: ### Domain Statement ```plx -domain = "domain_name" +domain = "domain_code" description = "Description of the domain" # Optional ``` -Note: The domain name usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. +Note: The domain code usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. ### Concept Definitions @@ -66,7 +66,7 @@ For details on how to structure concepts with fields, see the "Structuring Model ## Pipe Base Definition ```plx -[pipe.your_pipe_name] +[pipe.your_pipe_code] type = "PipeLLM" description = "A description of what your pipe does" inputs = { input_1 = "ConceptName1", input_2 = "ConceptName2" } @@ -475,7 +475,7 @@ The PipeExtract operator is used to extract text and images from an image or a P [pipe.extract_info] type = "PipeExtract" description = "extract the information" -inputs = { document = "PDF" } # or { image = "Image" } if it's an image. This is the only input. +inputs = { document = "Document" } # or { image = "Image" } if it's an image. This is the only input. output = "Page" ``` @@ -484,7 +484,7 @@ Using Extract Model Settings: [pipe.extract_with_model] type = "PipeExtract" description = "Extract with specific model" -inputs = { document = "PDF" } +inputs = { document = "Document" } output = "Page" model = "base_extract_mistral" # Use predefined extract preset or model alias ``` @@ -592,15 +592,16 @@ $sales_rep.phone | $sales_rep.email """ ``` -### Key Parameters +### Key Parameters (Template Mode) -- `template`: Inline template string (mutually exclusive with template_name) +- `template`: Inline template string (mutually exclusive with template_name and construct) - `template_name`: Name of a predefined template (mutually exclusive with template) - `template_category`: Template type ("llm_prompt", "html", "markdown", "mermaid", etc.) - `templating_style`: Styling options for template rendering - `extra_context`: Additional context variables for template For more control, you can use a nested `template` section instead of the `template` field: + - `template.template`: The template string - `template.category`: Template type - `template.templating_style`: Styling options @@ -608,9 +609,143 @@ For more control, you can use a nested `template` section instead of the `templa ### Template Variables Use the same variable insertion rules as PipeLLM: + - `@variable` for block insertion (multi-line content) - `$variable` for inline insertion (short text) +### Construct Mode (for StructuredContent Output) + +PipeCompose can also generate `StructuredContent` objects using the `construct` section. This mode composes field values from fixed values, variable references, templates, or nested structures. + +**When to use construct mode:** + +- You need to output a structured object (not just Text) +- You want to deterministically compose fields from existing data +- No LLM is needed - just data composition and templating + +#### Basic Construct Usage + +```plx +[concept.SalesSummary] +description = "A structured sales summary" + +[concept.SalesSummary.structure] +report_title = { type = "text", description = "Title of the report" } +customer_name = { type = "text", description = "Customer name" } +deal_value = { type = "number", description = "Deal value" } +summary_text = { type = "text", description = "Generated summary text" } + +[pipe.compose_summary] +type = "PipeCompose" +description = "Compose a sales summary from deal data" +inputs = { deal = "Deal" } +output = "SalesSummary" + +[pipe.compose_summary.construct] +report_title = "Monthly Sales Report" +customer_name = { from = "deal.customer_name" } +deal_value = { from = "deal.amount" } +summary_text = { template = "Deal worth $deal.amount with $deal.customer_name" } +``` + +#### Field Composition Methods + +There are four ways to define field values in a construct: + +**1. Fixed Value (literal)** + +Use a literal value directly: + +```plx +[pipe.compose_report.construct] +report_title = "Annual Report" +report_year = 2024 +is_draft = false +``` + +**2. Variable Reference (`from`)** + +Get a value from working memory using a dotted path: + +```plx +[pipe.compose_report.construct] +customer_name = { from = "deal.customer_name" } +total_amount = { from = "order.total" } +street_address = { from = "customer.address.street" } +``` + +**3. Template (`template`)** + +Render a Jinja2 template with variable substitution: + +```plx +[pipe.compose_report.construct] +invoice_number = { template = "INV-$order.id" } +summary = { template = "Deal worth $deal.amount with $deal.customer_name on {{ current_date }}" } +``` + +**4. Nested Construct** + +For nested structures, use a TOML subsection: + +```plx +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +#### Complete Construct Example + +```plx +domain = "invoicing" + +[concept.Address] +description = "A postal address" + +[concept.Address.structure] +street = { type = "text", description = "Street address" } +city = { type = "text", description = "City name" } +country = { type = "text", description = "Country name" } + +[concept.Invoice] +description = "An invoice document" + +[concept.Invoice.structure] +invoice_number = { type = "text", description = "Invoice number" } +total = { type = "number", description = "Total amount" } + +[pipe.compose_invoice] +type = "PipeCompose" +description = "Compose an invoice from order and customer data" +inputs = { order = "Order", customer = "Customer" } +output = "Invoice" + +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +#### Key Parameters (Construct Mode) + +- `construct`: Dictionary mapping field names to their composition rules +- Each field can be: + - A literal value (string, number, boolean) + - A dict with `from` key for variable reference + - A dict with `template` key for template rendering + - A nested dict for nested structures + +**Note:** You must use either `template` or `construct`, not both. They are mutually exclusive. + ## PipeImgGen operator The PipeImgGen operator is used to generate images using AI image generation models. diff --git a/.env.example b/.env.example index 22b29d7..cbc7ad2 100644 --- a/.env.example +++ b/.env.example @@ -1 +1 @@ -PIPELEX_INFERENCE_API_KEY= \ No newline at end of file +PIPELEX_GATEWAY_API_KEY= \ No newline at end of file diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 6125caa..af4572e 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -23,10 +23,10 @@ A pipeline file has three main sections: #### Domain Statement ```plx -domain = "domain_name" +domain = "domain_code" description = "Description of the domain" # Optional ``` -Note: The domain name usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. +Note: The domain code usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. #### Concept Definitions @@ -62,7 +62,7 @@ For details on how to structure concepts with fields, see the "Structuring Model ### Pipe Base Definition ```plx -[pipe.your_pipe_name] +[pipe.your_pipe_code] type = "PipeLLM" description = "A description of what your pipe does" inputs = { input_1 = "ConceptName1", input_2 = "ConceptName2" } @@ -471,7 +471,7 @@ The PipeExtract operator is used to extract text and images from an image or a P [pipe.extract_info] type = "PipeExtract" description = "extract the information" -inputs = { document = "PDF" } # or { image = "Image" } if it's an image. This is the only input. +inputs = { document = "Document" } # or { image = "Image" } if it's an image. This is the only input. output = "Page" ``` @@ -480,7 +480,7 @@ Using Extract Model Settings: [pipe.extract_with_model] type = "PipeExtract" description = "Extract with specific model" -inputs = { document = "PDF" } +inputs = { document = "Document" } output = "Page" model = "base_extract_mistral" # Use predefined extract preset or model alias ``` @@ -588,15 +588,16 @@ $sales_rep.phone | $sales_rep.email """ ``` -#### Key Parameters +#### Key Parameters (Template Mode) -- `template`: Inline template string (mutually exclusive with template_name) +- `template`: Inline template string (mutually exclusive with template_name and construct) - `template_name`: Name of a predefined template (mutually exclusive with template) - `template_category`: Template type ("llm_prompt", "html", "markdown", "mermaid", etc.) - `templating_style`: Styling options for template rendering - `extra_context`: Additional context variables for template For more control, you can use a nested `template` section instead of the `template` field: + - `template.template`: The template string - `template.category`: Template type - `template.templating_style`: Styling options @@ -604,9 +605,143 @@ For more control, you can use a nested `template` section instead of the `templa #### Template Variables Use the same variable insertion rules as PipeLLM: + - `@variable` for block insertion (multi-line content) - `$variable` for inline insertion (short text) +#### Construct Mode (for StructuredContent Output) + +PipeCompose can also generate `StructuredContent` objects using the `construct` section. This mode composes field values from fixed values, variable references, templates, or nested structures. + +**When to use construct mode:** + +- You need to output a structured object (not just Text) +- You want to deterministically compose fields from existing data +- No LLM is needed - just data composition and templating + +##### Basic Construct Usage + +```plx +[concept.SalesSummary] +description = "A structured sales summary" + +[concept.SalesSummary.structure] +report_title = { type = "text", description = "Title of the report" } +customer_name = { type = "text", description = "Customer name" } +deal_value = { type = "number", description = "Deal value" } +summary_text = { type = "text", description = "Generated summary text" } + +[pipe.compose_summary] +type = "PipeCompose" +description = "Compose a sales summary from deal data" +inputs = { deal = "Deal" } +output = "SalesSummary" + +[pipe.compose_summary.construct] +report_title = "Monthly Sales Report" +customer_name = { from = "deal.customer_name" } +deal_value = { from = "deal.amount" } +summary_text = { template = "Deal worth $deal.amount with $deal.customer_name" } +``` + +##### Field Composition Methods + +There are four ways to define field values in a construct: + +**1. Fixed Value (literal)** + +Use a literal value directly: + +```plx +[pipe.compose_report.construct] +report_title = "Annual Report" +report_year = 2024 +is_draft = false +``` + +**2. Variable Reference (`from`)** + +Get a value from working memory using a dotted path: + +```plx +[pipe.compose_report.construct] +customer_name = { from = "deal.customer_name" } +total_amount = { from = "order.total" } +street_address = { from = "customer.address.street" } +``` + +**3. Template (`template`)** + +Render a Jinja2 template with variable substitution: + +```plx +[pipe.compose_report.construct] +invoice_number = { template = "INV-$order.id" } +summary = { template = "Deal worth $deal.amount with $deal.customer_name on {{ current_date }}" } +``` + +**4. Nested Construct** + +For nested structures, use a TOML subsection: + +```plx +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +##### Complete Construct Example + +```plx +domain = "invoicing" + +[concept.Address] +description = "A postal address" + +[concept.Address.structure] +street = { type = "text", description = "Street address" } +city = { type = "text", description = "City name" } +country = { type = "text", description = "Country name" } + +[concept.Invoice] +description = "An invoice document" + +[concept.Invoice.structure] +invoice_number = { type = "text", description = "Invoice number" } +total = { type = "number", description = "Total amount" } + +[pipe.compose_invoice] +type = "PipeCompose" +description = "Compose an invoice from order and customer data" +inputs = { order = "Order", customer = "Customer" } +output = "Invoice" + +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +##### Key Parameters (Construct Mode) + +- `construct`: Dictionary mapping field names to their composition rules +- Each field can be: + - A literal value (string, number, boolean) + - A dict with `from` key for variable reference + - A dict with `template` key for template rendering + - A nested dict for nested structures + +**Note:** You must use either `template` or `construct`, not both. They are mutually exclusive. + ### PipeImgGen operator The PipeImgGen operator is used to generate images using AI image generation models. @@ -952,13 +1087,13 @@ So here are a few concrete examples of calls to execute_pipeline with various wa }, ) -## Here we have a single input and it's a PDF. -## Because PDFContent is a native concept, we can use it directly as a value, +## Here we have a single input and it's a document. +## Because DocumentContent is a native concept, we can use it directly as a value, ## the system knows what content it corresponds to: pipe_output = await execute_pipeline( pipe_code="power_extractor_dpe", inputs={ - "document": PDFContent(url=pdf_url), + "document": DocumentContent(url=pdf_url), }, ) @@ -1081,82 +1216,4 @@ result_list = pipe_output.main_stuff_as_items(item_type=GanttChart) ``` --- - -## Rules to choose LLM models used in PipeLLMs. - -### LLM Configuration System - -In order to use it in a pipe, an LLM is referenced by its llm_handle (alias) and possibly by an llm_preset. -LLM configurations are managed through the new inference backend system with files located in `.pipelex/inference/`: - -- **Model Deck**: `.pipelex/inference/deck/base_deck.toml` and `.pipelex/inference/deck/overrides.toml` -- **Backends**: `.pipelex/inference/backends.toml` and `.pipelex/inference/backends/*.toml` -- **Routing**: `.pipelex/inference/routing_profiles.toml` - -### LLM Handles - -An llm_handle can be either: -1. **A direct model name** (like "gpt-4o-mini", "claude-3-sonnet") - automatically available for all models loaded by the inference backend system -2. **An alias** - user-defined shortcuts that map to model names, defined in the `[aliases]` section: - -```toml -[aliases] -base-claude = "claude-4.5-sonnet" -base-gpt = "gpt-5" -base-gemini = "gemini-2.5-flash" -base-mistral = "mistral-medium" -``` - -The system first looks for direct model names, then checks aliases if no direct match is found. The system handles model routing through backends automatically. - -### Using an LLM Handle in a PipeLLM - -Here is an example of using an llm_handle to specify which LLM to use in a PipeLLM: - -```plx -[pipe.hello_world] -type = "PipeLLM" -description = "Write text about Hello World." -output = "Text" -model = { model = "gpt-5", temperature = 0.9 } -prompt = """ -Write a haiku about Hello World. -""" -``` - -As you can see, to use the LLM, you must also indicate the temperature (float between 0 and 1) and max_tokens (either an int or the string "auto"). - -### LLM Presets - -Presets are meant to record the choice of an llm with its hyper parameters (temperature and max_tokens) if it's good for a particular task. LLM Presets are skill-oriented. - -Examples: -```toml -llm_to_engineer = { model = "base-claude", temperature = 1 } -llm_to_extract_invoice = { model = "claude-4.5-sonnet", temperature = 0.1, max_tokens = "auto" } -``` - -The interest is that these presets can be used to set the LLM choice in a PipeLLM, like this: - -```plx -[pipe.extract_invoice] -type = "PipeLLM" -description = "Extract invoice information from an invoice text transcript" -inputs = { invoice_text = "InvoiceText" } -output = "Invoice" -model = "llm_to_extract_invoice" -prompt = """ -Extract invoice information from this invoice: - -The category of this invoice is: $invoice_details.category. - -@invoice_text -""" -``` - -The setting here `model = "llm_to_extract_invoice"` works because "llm_to_extract_invoice" has been declared as an llm_preset in the deck. -You must not use an LLM preset in a PipeLLM that does not exist in the deck. If needed, you can add llm presets. - - -You can override the predefined llm presets by setting them in `.pipelex/inference/deck/overrides.toml`. diff --git a/.github/workflows/tests-check.yml b/.github/workflows/tests-check.yml index c94ad16..a347c29 100644 --- a/.github/workflows/tests-check.yml +++ b/.github/workflows/tests-check.yml @@ -43,8 +43,5 @@ jobs: source .venv/bin/activate echo -e "y\nA\n1" |pipelex init - - name: Boot test - run: make tp TEST=TestFundamentals - - name: Run tests run: make gha-tests diff --git a/.gitignore b/.gitignore index 29670a3..9008331 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,11 @@ dist/ # Results results/ -# temps temp/ pipelex_super.toml +pipelex_override.toml +telemetry_override.toml base_llm_deck.toml +.pipelex/storage +pipeline_0*/ +.pipelex/storage \ No newline at end of file diff --git a/.pipelex/inference/backends.toml b/.pipelex/inference/backends.toml new file mode 100644 index 0000000..360a73d --- /dev/null +++ b/.pipelex/inference/backends.toml @@ -0,0 +1,108 @@ +#################################################################################################### +# Pipelex Inference Backends Configuration +#################################################################################################### +# +# This file configures the inference backends available to Pipelex. +# Each backend connects to a different AI service provider (OpenAI, Anthropic, Google, etc.). +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +#################################################################################################### + +[pipelex_gateway] +display_name = "⭐ Pipelex Gateway" +enabled = true # Enable after accepting terms via `pipelex init config` +api_key = "${PIPELEX_GATEWAY_API_KEY}" + +[anthropic] +enabled = false +api_key = "${ANTHROPIC_API_KEY}" + +[azure_openai] +display_name = "Azure OpenAI" +enabled = false +endpoint = "${AZURE_API_BASE}" +api_key = "${AZURE_API_KEY}" +api_version = "${AZURE_API_VERSION}" + +[bedrock] +display_name = "Amazon Bedrock" +enabled = false +aws_region = "${AWS_REGION}" + +[blackboxai] +display_name = "BlackBox AI" +enabled = false +endpoint = "https://api.blackbox.ai/v1" +api_key = "${BLACKBOX_API_KEY}" + +[fal] +display_name = "FAL" +enabled = false +api_key = "${FAL_API_KEY}" + +[google] +display_name = "Google AI" +enabled = false +api_key = "${GOOGLE_API_KEY}" + +[groq] +display_name = "Groq" +enabled = false +endpoint = "https://api.groq.com/openai/v1" +api_key = "${GROQ_API_KEY}" + +[huggingface] +display_name = "Hugging Face" +enabled = false +api_key = "${HF_TOKEN}" + +[mistral] +display_name = "Mistral AI" +enabled = false +api_key = "${MISTRAL_API_KEY}" + +[ollama] +enabled = false +endpoint = "http://localhost:11434/v1" + +[openai] +display_name = "OpenAI" +enabled = false +api_key = "${OPENAI_API_KEY}" + +[portkey] +display_name = "Portkey" +enabled = false +endpoint = "https://api.portkey.ai/v1" +api_key = "${PORTKEY_API_KEY}" + +[scaleway] +display_name = "Scaleway" +enabled = false +endpoint = "${SCALEWAY_ENDPOINT}" +api_key = "${SCALEWAY_API_KEY}" + +[vertexai] +display_name = "Google Vertex AI" +enabled = false # This is the only one we disable beacuse setting it up requires internet access just to get credentials so it fails in CI sandboxes +gcp_project_id = "${GCP_PROJECT_ID}" +gcp_location = "${GCP_LOCATION}" +gcp_credentials_file_path = "${GCP_CREDENTIALS_FILE_PATH}" + +[xai] +display_name = "xAI" +enabled = false +endpoint = "https://api.x.ai/v1" +api_key = "${XAI_API_KEY}" + +[internal] # software-only backend, runs internally, without AI +enabled = true + +# Deprecated +[pipelex_inference] +display_name = "🛑 Legacy Pipelex Inference" +enabled = false +endpoint = "https://inference.pipelex.com/v1" +api_key = "${PIPELEX_INFERENCE_API_KEY}" diff --git a/.pipelex/inference/backends/anthropic.toml b/.pipelex/inference/backends/anthropic.toml new file mode 100644 index 0000000..2c94cd3 --- /dev/null +++ b/.pipelex/inference/backends/anthropic.toml @@ -0,0 +1,100 @@ +################################################################################ +# Anthropic Backend Configuration +################################################################################ +# +# This file defines the model specifications for Anthropic Claude models. +# It contains model definitions for various Claude language models +# accessible through the Anthropic API. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["claude-3.5-sonnet"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "anthropic" +prompting_target = "anthropic" +structure_method = "instructor/anthropic_tools" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- Claude 3 Series ---------------------------------------------------------- +[claude-3-haiku] +model_id = "claude-3-haiku-20240307" +max_tokens = 4096 +inputs = ["text", "images"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 0.25, output = 1.25 } + +# --- Claude 3.7 Series -------------------------------------------------------- +["claude-3.7-sonnet"] +model_id = "claude-3-7-sonnet-20250219" +max_tokens = 8192 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } + +# --- Claude 4 Series ---------------------------------------------------------- +[claude-4-sonnet] +model_id = "claude-sonnet-4-20250514" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } + +[claude-4-opus] +model_id = "claude-opus-4-20250514" +max_tokens = 32000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } + +# --- Claude 4.1 Series -------------------------------------------------------- +["claude-4.1-opus"] +model_id = "claude-opus-4-1-20250805" +max_tokens = 32000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } + +# --- Claude 4.5 Series -------------------------------------------------------- +["claude-4.5-sonnet"] +model_id = "claude-sonnet-4-5-20250929" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } + +["claude-4.5-haiku"] +model_id = "claude-haiku-4-5-20251001" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 1.0, output = 5.0 } + +["claude-4.5-opus"] +model_id = "claude-opus-4-5-20251101" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 5.0, output = 25.0 } diff --git a/.pipelex/inference/backends/azure_openai.toml b/.pipelex/inference/backends/azure_openai.toml new file mode 100644 index 0000000..8a89898 --- /dev/null +++ b/.pipelex/inference/backends/azure_openai.toml @@ -0,0 +1,213 @@ +################################################################################ +# Azure OpenAI Backend Configuration +################################################################################ +# +# This file defines the model specifications for Azure OpenAI models. +# It contains model definitions for OpenAI models deployed on Azure +# accessible through the Azure OpenAI API. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["gpt-4.1"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "azure_openai_responses" +prompting_target = "openai" +structure_method = "instructor/openai_responses_tools" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- GPT-4o Series ------------------------------------------------------------ +[gpt-4o] +model_id = "gpt-4o-2024-11-20" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 2.5, output = 10.0 } + +[gpt-4o-mini] +model_id = "gpt-4o-mini-2024-07-18" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.15, output = 0.6 } + +# --- GPT-4.1 Series ----------------------------------------------------------- +["gpt-4.1"] +model_id = "gpt-4.1-2025-04-14" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 2, output = 8 } + +["gpt-4.1-mini"] +model_id = "gpt-4.1-mini-2025-04-14" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.4, output = 1.6 } + +["gpt-4.1-nano"] +model_id = "gpt-4.1-nano-2025-04-14" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.1, output = 0.4 } + +# --- o Series ---------------------------------------------------------------- +[o1-mini] +model_id = "o1-mini-2024-09-12" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 3.0, output = 12.0 } +valued_constraints = { fixed_temperature = 1 } + +[o1] +model_id = "o1-2024-12-17" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 15.0, output = 60.0 } +valued_constraints = { fixed_temperature = 1 } + +[o3-mini] +model_id = "o3-mini-2025-01-31" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 1.1, output = 4.4 } +valued_constraints = { fixed_temperature = 1 } + +[o3] +model_id = "o3-2025-04-16" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 2, output = 8 } +valued_constraints = { fixed_temperature = 1 } + +# --- GPT-5 Series ------------------------------------------------------------- +[gpt-5-mini] +model_id = "gpt-5-mini-2025-08-07" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.25, output = 2.0 } +valued_constraints = { fixed_temperature = 1 } + +[gpt-5-nano] +model_id = "gpt-5-nano-2025-08-07" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.05, output = 0.4 } +valued_constraints = { fixed_temperature = 1 } + +[gpt-5-chat] +model_id = "gpt-5-chat-2025-08-07" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +[gpt-5] +model_id = "gpt-5-2025-08-07" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +# --- GPT-5.1 Series ------------------------------------------------------------- +["gpt-5.1"] +model_id = "gpt-5.1-2025-11-13" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +["gpt-5.1-chat"] +model_id = "gpt-5.1-chat-2025-11-13" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +["gpt-5.1-codex"] +model_id = "gpt-5.1-codex-2025-11-13" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +# --- GPT-5.2 Series ------------------------------------------------------------- +["gpt-5.2"] +model_id = "gpt-5.2-2025-12-11" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1.75, output = 14.0 } + +["gpt-5.2-chat"] +model_id = "gpt-5.2-chat-2025-12-11" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +################################################################################ +# IMAGE GENERATION MODELS +################################################################################ + +# --- OpenAI Image Generation -------------------------------------------------- +[gpt-image-1] +sdk = "azure_rest_img_gen" +model_type = "img_gen" +model_id = "gpt-image-1-2025-04-15" +inputs = ["text"] +outputs = ["image"] +costs = { input = 10, output = 40 } + +[gpt-image-1.rules] +prompt = "positive_only" +num_images = "gpt" +aspect_ratio = "gpt" +background = "gpt" +inference = "gpt" +safety_checker = "unavailable" +output_format = "gpt" + +[gpt-image-1-mini] +sdk = "azure_rest_img_gen" +model_type = "img_gen" +model_id = "gpt-image-1-mini-2025-10-06" +inputs = ["text"] +outputs = ["image"] +costs = { input = 2.5, output = 8 } + +[gpt-image-1-mini.rules] +prompt = "positive_only" +num_images = "gpt" +aspect_ratio = "gpt" +background = "gpt" +inference = "gpt" +safety_checker = "unavailable" +output_format = "gpt" + +["gpt-image-1.5"] +sdk = "azure_rest_img_gen" +model_type = "img_gen" +model_id = "gpt-image-1.5-2025-12-16" +inputs = ["text"] +outputs = ["image"] +costs = { input = 8, output = 32 } + +["gpt-image-1.5".rules] +prompt = "positive_only" +num_images = "gpt" +aspect_ratio = "gpt" +background = "gpt" +inference = "gpt" +safety_checker = "unavailable" +output_format = "gpt" diff --git a/.pipelex/inference/backends/bedrock.toml b/.pipelex/inference/backends/bedrock.toml new file mode 100644 index 0000000..dc3a566 --- /dev/null +++ b/.pipelex/inference/backends/bedrock.toml @@ -0,0 +1,120 @@ +################################################################################ +# Amazon Bedrock Backend Configuration +################################################################################ +# +# This file defines the model specifications for Amazon Bedrock models. +# It contains model definitions for various language models +# accessible through the Amazon Bedrock service. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["claude-3.5-sonnet"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "bedrock_aioboto3" +prompting_target = "anthropic" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- Mistral Models ----------------------------------------------------------- +[bedrock-mistral-large] +model_id = "mistral.mistral-large-2407-v1:0" +max_tokens = 8192 +inputs = ["text"] +outputs = ["text"] +costs = { input = 4.0, output = 12.0 } + +# --- Meta Llama Models -------------------------------------------------------- +[bedrock-meta-llama-3-3-70b-instruct] +model_id = "us.meta.llama3-3-70b-instruct-v1:0" +max_tokens = 8192 +inputs = ["text"] +outputs = ["text"] +# TODO: find out the actual cost per million tokens for llama3 on bedrock +costs = { input = 3.0, output = 15.0 } + +# --- Amazon Nova Models ------------------------------------------------------- +[bedrock-nova-pro] +model_id = "us.amazon.nova-pro-v1:0" +max_tokens = 5120 +inputs = ["text"] +outputs = ["text"] +# TODO: find out the actual cost per million tokens for nova on bedrock +costs = { input = 3.0, output = 15.0 } + +# --- Claude LLMs -------------------------------------------------------------- +["claude-3.7-sonnet"] +sdk = "bedrock_anthropic" +model_id = "us.anthropic.claude-3-7-sonnet-20250219-v1:0" +max_tokens = 8192 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } + +[claude-4-sonnet] +sdk = "bedrock_anthropic" +model_id = "us.anthropic.claude-sonnet-4-20250514-v1:0" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } + +[claude-4-opus] +sdk = "bedrock_anthropic" +model_id = "us.anthropic.claude-opus-4-20250514-v1:0" +max_tokens = 32000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } + +["claude-4.1-opus"] +sdk = "bedrock_anthropic" +model_id = "us.anthropic.claude-opus-4-1-20250805-v1:0" +max_tokens = 32000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } + +["claude-4.5-sonnet"] +sdk = "bedrock_anthropic" +model_id = "us.anthropic.claude-sonnet-4-5-20250929-v1:0" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } + +["claude-4.5-haiku"] +sdk = "bedrock_anthropic" +model_id = "us.anthropic.claude-haiku-4-5-20251001-v1:0" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 1.0, output = 5.0 } + +["claude-4.5-opus"] +sdk = "bedrock_anthropic" +model_id = "global.anthropic.claude-opus-4-5-20251101-v1:0" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 5.0, output = 25.0 } diff --git a/.pipelex/inference/backends/blackboxai.toml b/.pipelex/inference/backends/blackboxai.toml new file mode 100644 index 0000000..ee8a105 --- /dev/null +++ b/.pipelex/inference/backends/blackboxai.toml @@ -0,0 +1,234 @@ +################################################################################ +# BlackBoxAI Backend Configuration +################################################################################ +# +# This file defines the model specifications for BlackBoxAI models. +# It contains model definitions for various language models from different providers +# accessible through the BlackBoxAI API. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["gpt-4.5-preview"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "openai" +structure_method = "instructor/openai_tools" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- OpenAI Models ------------------------------------------------------------ +[gpt-4o-mini] +model_id = "blackboxai/openai/gpt-4o-mini" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.15, output = 0.60 } + +[gpt-4o] +model_id = "blackboxai/openai/gpt-4o" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 2.50, output = 10.00 } + +[o1-mini] +model_id = "blackboxai/openai/o1-mini" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 1.10, output = 4.40 } + +[o4-mini] +model_id = "blackboxai/openai/o4-mini" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 1.10, output = 4.40 } + +# --- Claude LLMs -------------------------------------------------------------- +["claude-3.5-haiku"] +model_id = "blackboxai/anthropic/claude-3.5-haiku" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.80, output = 4.00 } + +["claude-3.5-sonnet"] +model_id = "blackboxai/anthropic/claude-3.5-sonnet" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 3.00, output = 15.00 } + +["claude-3.7-sonnet"] +model_id = "blackboxai/anthropic/claude-3.7-sonnet" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 3.00, output = 15.00 } + +[claude-4-opus] +model_id = "blackboxai/anthropic/claude-opus-4" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 15.00, output = 75.00 } + +[claude-4-sonnet] +model_id = "blackboxai/anthropic/claude-sonnet-4" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 3.00, output = 15.00 } + +["claude-4.5-sonnet"] +model_id = "blackboxai/anthropic/claude-sonnet-4.5" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.28, output = 1.10 } + +# --- Google Models ------------------------------------------------------------ +["gemini-2.5-flash"] +model_id = "blackboxai/google/gemini-2.5-flash" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.30, output = 2.50 } + +["gemini-2.5-pro"] +model_id = "blackboxai/google/gemini-2.5-pro" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.00 } + +# --- Mistral Models ----------------------------------------------------------- +[mistral-large] +model_id = "blackboxai/mistralai/mistral-large" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 2.00, output = 6.00 } + +[pixtral-large-2411] +model_id = "blackboxai/mistralai/pixtral-large-2411" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 2.00, output = 6.00 } + +# --- Meta Llama Models -------------------------------------------------------- +["llama-3.3-70b-instruct"] +model_id = "blackboxai/meta-llama/llama-3.3-70b-instruct" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.04, output = 0.12 } + +["llama-3.2-11b-vision-instruct"] +model_id = "blackboxai/meta-llama/llama-3.2-11b-vision-instruct" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.05, output = 0.05 } + +# --- Qwen Models -------------------------------------------------------------- +["qwen-2.5-72b-instruct"] +model_id = "blackboxai/qwen/qwen-2.5-72b-instruct" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.12, output = 0.39 } + +["qwen2.5-vl-72b-instruct"] +model_id = "blackboxai/qwen/qwen2.5-vl-72b-instruct" +inputs = ["text", "images"] +outputs = ["text"] +costs = { input = 0.25, output = 0.75 } + +# --- Amazon Nova Models ------------------------------------------------------- +[nova-micro-v1] +model_id = "blackboxai/amazon/nova-micro-v1" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.04, output = 0.14 } + +[nova-lite-v1] +model_id = "blackboxai/amazon/nova-lite-v1" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.06, output = 0.24 } + +################################################################################ +# FREE MODELS +################################################################################ + +# --- DeepSeek Free Models ----------------------------------------------------- +[deepseek-chat] +model_id = "blackboxai/deepseek/deepseek-chat:free" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.00, output = 0.00 } + +[deepseek-r1] +model_id = "blackboxai/deepseek/deepseek-r1:free" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.00, output = 0.00 } + +# --- Meta Llama Free Models --------------------------------------------------- +["llama-3.3-70b-instruct-free"] +model_id = "blackboxai/meta-llama/llama-3.3-70b-instruct:free" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.00, output = 0.00 } + + +################################################################################ +# IMAGE GENERATION MODELS +################################################################################ + +[flux-pro] +model_type = "img_gen" +sdk = "blackboxai_img_gen" +model_id = "blackboxai/black-forest-labs/flux-pro" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.0, output = 0.04 } + +["flux-pro/v1.1"] +model_type = "img_gen" +sdk = "blackboxai_img_gen" +model_id = "blackboxai/black-forest-labs/flux-1.1-pro" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.0, output = 0.04 } + +["flux-pro/v1.1-ultra"] +model_type = "img_gen" +sdk = "blackboxai_img_gen" +model_id = "blackboxai/black-forest-labs/flux-1.1-pro-ultra" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.0, output = 0.06 } + +[fast-lightning-sdxl] +model_type = "img_gen" +sdk = "blackboxai_img_gen" +model_id = "blackboxai/bytedance/sdxl-lightning-4step" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.0, output = 0.0014 } + +[nano-banana] +model_type = "img_gen" +sdk = "blackboxai_img_gen" +model_id = "blackboxai/google/nano-banana" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.0, output = 0.039 } + +[nano-banana-pro] +model_type = "img_gen" +sdk = "blackboxai_img_gen" +model_id = "blackboxai/google/nano-banana-pro" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.0, output = 0.039 } diff --git a/.pipelex/inference/backends/fal.toml b/.pipelex/inference/backends/fal.toml new file mode 100644 index 0000000..3433f99 --- /dev/null +++ b/.pipelex/inference/backends/fal.toml @@ -0,0 +1,107 @@ +################################################################################ +# FAL Backend Configuration +################################################################################ +# +# This file defines the model specifications for FAL (Fast AI Labs) models. +# It contains model definitions for various image generation models +# accessible through the FAL API. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["flux-pro/v1.1"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "img_gen" +sdk = "fal" +prompting_target = "fal" + +################################################################################ +# IMAGE GENERATION MODELS +################################################################################ + +# --- Flux Pro Series ---------------------------------------------------------- +[flux-pro] +model_id = "fal-ai/flux-pro" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.05, output = 0.0 } + +[flux-pro.rules] +prompt = "positive_only" +num_images = "fal" +aspect_ratio = "flux" +inference = "flux" +safety_checker = "available" +output_format = "flux_1" +specific = "fal" + +["flux-pro/v1.1"] +model_id = "fal-ai/flux-pro/v1.1" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.05, output = 0.0 } + +["flux-pro/v1.1".rules] +prompt = "positive_only" +num_images = "fal" +aspect_ratio = "flux" +inference = "flux" +safety_checker = "available" +output_format = "flux_1" +specific = "fal" + +["flux-pro/v1.1-ultra"] +model_id = "fal-ai/flux-pro/v1.1-ultra" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.06, output = 0.0 } + +["flux-pro/v1.1-ultra".rules] +prompt = "positive_only" +num_images = "fal" +aspect_ratio = "flux_11_ultra" +inference = "flux_11_ultra" +safety_checker = "available" +output_format = "flux_1" +specific = "fal" + +[flux-2] +model_id = "fal-ai/flux-2" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.05, output = 0.0 } + +[flux-2.rules] +prompt = "positive_only" +num_images = "fal" +aspect_ratio = "flux" +inference = "flux" +safety_checker = "available" +output_format = "flux_2" +specific = "fal" + +# --- SDXL models -------------------------------------------------------------- +[fast-lightning-sdxl] +model_id = "fal-ai/fast-lightning-sdxl" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.0003, output = 0.0 } + +[fast-lightning-sdxl.rules] +prompt = "positive_only" +num_images = "fal" +aspect_ratio = "flux" +inference = "sdxl_lightning" +safety_checker = "unavailable" +output_format = "sdxl" +specific = "fal" diff --git a/.pipelex/inference/backends/google.toml b/.pipelex/inference/backends/google.toml new file mode 100644 index 0000000..de001aa --- /dev/null +++ b/.pipelex/inference/backends/google.toml @@ -0,0 +1,94 @@ +################################################################################ +# Google Gemini API Backend Configuration +################################################################################ +# +# This file defines the model specifications for Google Gemini API models. +# It contains model definitions for Gemini language models +# accessible through the Google Gemini API (not VertexAI). +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["gemini-2.0-flash"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "google" +prompting_target = "gemini" +structure_method = "instructor/genai_tools" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- Gemini 2.0 Series ---------------------------------------- +["gemini-2.0-flash"] +model_id = "gemini-2.0-flash" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 0.10, output = 0.40 } + +# --- Gemini 2.5 Series ---------------------------------------- +["gemini-2.5-pro"] +model_id = "gemini-2.5-pro" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 1.25, output = 10.0 } + +["gemini-2.5-flash"] +model_id = "gemini-2.5-flash" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 0.30, output = 2.50 } + +["gemini-2.5-flash-lite"] +model_id = "gemini-2.5-flash-lite" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 0.10, output = 0.40 } + +# --- Gemini 3.0 Series ---------------------------------------- +["gemini-3.0-pro"] +model_id = "gemini-3-pro-preview" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 2, output = 12.0 } + +["gemini-3.0-flash-preview"] +model_id = "gemini-3-flash-preview" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 0.5, output = 3.0 } + +################################################################################ +# IMAGE GENERATION MODELS (Nano Banana) +################################################################################ + +[nano-banana] +model_type = "img_gen" +model_id = "gemini-2.5-flash-image" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.0, output = 0.039 } + +[nano-banana-pro] +model_type = "img_gen" +model_id = "gemini-3-pro-image-preview" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.0, output = 0.039 } diff --git a/.pipelex/inference/backends/groq.toml b/.pipelex/inference/backends/groq.toml new file mode 100644 index 0000000..72bdae3 --- /dev/null +++ b/.pipelex/inference/backends/groq.toml @@ -0,0 +1,129 @@ +################################################################################ +# Groq Backend Configuration +################################################################################ +# +# This file defines the model specifications for Groq models. +# It contains model definitions for various LLM models accessible through +# the Groq API, including text-only and vision-capable models. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots or slashes must be quoted (e.g., ["meta-llama/llama-4-scout"]) +# - Model costs are in USD per million tokens (input/output) +# - Vision models support max 5 images per request, 33MP max resolution +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "openai" +structure_method = "instructor/json" + +################################################################################ +# PRODUCTION TEXT MODELS +################################################################################ + +# --- Meta Llama 3.x Series ---------------------------------------------------- +["llama-3.1-8b-instant"] +model_id = "llama-3.1-8b-instant" +max_tokens = 131072 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.05, output = 0.08 } + +["llama-3.3-70b-versatile"] +model_id = "llama-3.3-70b-versatile" +max_tokens = 32768 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.59, output = 0.79 } + +# --- Meta Llama Guard --------------------------------------------------------- +[llama-guard-4-12b] +model_id = "meta-llama/llama-guard-4-12b" +max_tokens = 1024 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.20, output = 0.20 } + +# --- OpenAI GPT-OSS Models ---------------------------------------------------- +[gpt-oss-20b] +model_id = "openai/gpt-oss-20b" +max_tokens = 65536 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.075, output = 0.30 } + +[gpt-oss-120b] +model_id = "openai/gpt-oss-120b" +max_tokens = 65536 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.15, output = 0.60 } + +# --- Groq Compound Systems ---------------------------------------------------- +["groq/compound"] +model_id = "groq/compound" +max_tokens = 8192 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.15, output = 0.45 } + +["groq/compound-mini"] +model_id = "groq/compound-mini" +max_tokens = 8192 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.10, output = 0.30 } + +################################################################################ +# PREVIEW MODELS +################################################################################ + +# --- Meta Llama 4 Vision Models (Preview) ------------------------------------- +[llama-4-scout-17b-16e-instruct] +model_id = "meta-llama/llama-4-scout-17b-16e-instruct" +max_tokens = 8192 +inputs = ["text", "images"] +outputs = ["text", "structured"] +max_prompt_images = 5 +costs = { input = 0.11, output = 0.34 } + +[llama-4-maverick-17b-128e-instruct] +model_id = "meta-llama/llama-4-maverick-17b-128e-instruct" +max_tokens = 8192 +inputs = ["text", "images"] +outputs = ["text", "structured"] +max_prompt_images = 5 +costs = { input = 0.20, output = 0.60 } + +# --- Moonshot Kimi K2 --------------------------------------------------------- +[kimi-k2-instruct-0905] +model_id = "moonshotai/kimi-k2-instruct-0905" +max_tokens = 16384 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 1.00, output = 3.00 } + +# --- OpenAI Safety Model ------------------------------------------------------ +[gpt-oss-safeguard-20b] +model_id = "openai/gpt-oss-safeguard-20b" +max_tokens = 65536 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.075, output = 0.30 } + +# --- Qwen 3 ------------------------------------------------------------------- +[qwen3-32b] +model_id = "qwen/qwen3-32b" +max_tokens = 40960 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.29, output = 0.59 } diff --git a/.pipelex/inference/backends/huggingface.toml b/.pipelex/inference/backends/huggingface.toml new file mode 100644 index 0000000..1a79638 --- /dev/null +++ b/.pipelex/inference/backends/huggingface.toml @@ -0,0 +1,43 @@ +################################################################################ +# Hugging Face Backend Configuration +################################################################################ +# +# This file defines the model specifications for Hugging Face models. +# It contains model definitions for various image generation models +# accessible through the Hugging Face Inference API with provider="auto". +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots or slashes must be quoted (e.g., ["stabilityai/stable-diffusion-2-1"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "img_gen" +sdk = "huggingface_img_gen" + +################################################################################ +# IMAGE GENERATION MODELS +################################################################################ + +# --- Qwen Image Models -------------------------------------------------- +[qwen-image] +model_id = "Qwen/Qwen-Image" +inputs = ["text"] +outputs = ["image"] +costs = { input = 0.0, output = 0.0 } +variant = "fal-ai" +# variant = "replicate" + +[qwen-image.rules] +prompt = "with_negative" +aspect_ratio = "qwen_image" +inference = "qwen_image" diff --git a/.pipelex/inference/backends/internal.toml b/.pipelex/inference/backends/internal.toml new file mode 100644 index 0000000..e44b222 --- /dev/null +++ b/.pipelex/inference/backends/internal.toml @@ -0,0 +1,37 @@ +################################################################################ +# Internal Backend Configuration +################################################################################ +# +# This file defines the model specifications for internal software-only models. +# These models run internally without external APIs or AI services. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# TEXT EXTRACTION MODELS +################################################################################ + +# --- PyPDFium2 Text Extractor ------------------------------------------------- +[pypdfium2-extract-pdf] +model_type = "text_extractor" +sdk = "pypdfium2" +model_id = "extract-text" +inputs = ["pdf"] +outputs = ["pages"] +costs = {} + +# --- Docling Text Extractor --------------------------------------------------- +[docling-extract-text] +model_type = "text_extractor" +sdk = "docling_sdk" +model_id = "extract-text" +inputs = ["pdf", "image"] +outputs = ["pages"] +costs = {} diff --git a/.pipelex/inference/backends/mistral.toml b/.pipelex/inference/backends/mistral.toml new file mode 100644 index 0000000..e131f8e --- /dev/null +++ b/.pipelex/inference/backends/mistral.toml @@ -0,0 +1,164 @@ +################################################################################ +# Mistral Backend Configuration +################################################################################ +# +# This file defines the model specifications for Mistral AI models. +# It contains model definitions for various Mistral language models and specialized models +# accessible through the Mistral API. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["ministral-3b"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "mistral" +prompting_target = "mistral" +structure_method = "instructor/mistral_tools" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- Ministral Series --------------------------------------------------------- +[ministral-3b] +model_id = "ministral-3b-latest" +max_tokens = 131072 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.04, output = 0.04 } + +[ministral-8b] +model_id = "ministral-8b-latest" +max_tokens = 131072 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.1, output = 0.1 } + +# --- Mistral 7B Series -------------------------------------------------------- +[mistral-7b-2312] +model_id = "mistral-large-2402" +max_tokens = 32768 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.25, output = 0.25 } + +# --- Mistral 8x7B Series ------------------------------------------------------ +[mistral-8x7b-2312] +model_id = "open-mixtral-8x7b" +max_tokens = 32768 +inputs = ["text"] +outputs = ["text"] +costs = { input = 0.7, output = 0.7 } + +# --- Mistral Codestral Series ------------------------------------------------- +[mistral-codestral-2405] +model_id = "codestral-2405" +max_tokens = 262144 +inputs = ["text"] +outputs = ["text"] +costs = { input = 1.0, output = 3.0 } + +# --- Mistral Large Series ----------------------------------------------------- +[mistral-large-2402] +model_id = "mistral-large-2402" +max_tokens = 32768 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 4.0, output = 12.0 } + +[mistral-large] +model_id = "mistral-large-latest" +max_tokens = 131072 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 4.0, output = 12.0 } + +# --- Mistral Small Series ----------------------------------------------------- +[mistral-small-2402] +model_id = "mistral-small-2402" +max_tokens = 32768 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 1.0, output = 3.0 } + +[mistral-small] +model_id = "mistral-small-latest" +max_tokens = 32768 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 1.0, output = 3.0 } + +# --- Pixtral Series ----------------------------------------------------------- +[pixtral-12b] +model_id = "pixtral-12b-latest" +max_tokens = 131072 +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.15, output = 0.15 } + +[pixtral-large] +model_id = "pixtral-large-latest" +max_tokens = 131072 +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 2.0, output = 6.0 } + +# --- Mistral Medium Series ---------------------------------------------------- +[mistral-medium] +model_id = "mistral-medium-latest" +max_tokens = 128000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.4, output = 2.0 } + +[mistral-medium-2508] +model_id = "mistral-medium-2508" +max_tokens = 128000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.4, output = 2.0 } + +################################################################################ +# EXTRACTION MODELS +################################################################################ + +# TODO: add support to pricing per page + +[mistral-ocr-2503] +model_type = "text_extractor" +model_id = "mistral-ocr-2503" +max_tokens = 16384 +inputs = ["pdf", "image"] +outputs = ["pages"] + +[mistral-ocr-2505] +model_type = "text_extractor" +model_id = "mistral-ocr-2505" +max_tokens = 16384 +inputs = ["pdf", "image"] +outputs = ["pages"] + +[mistral-ocr-2512] +model_type = "text_extractor" +model_id = "mistral-ocr-2512" +max_tokens = 16384 +inputs = ["pdf", "image"] +outputs = ["pages"] + +[mistral-ocr] +model_type = "text_extractor" +model_id = "mistral-ocr-latest" +max_tokens = 16384 +inputs = ["pdf", "image"] +outputs = ["pages"] diff --git a/.pipelex/inference/backends/ollama.toml b/.pipelex/inference/backends/ollama.toml new file mode 100644 index 0000000..397e9ac --- /dev/null +++ b/.pipelex/inference/backends/ollama.toml @@ -0,0 +1,63 @@ +################################################################################ +# Ollama Backend Configuration +################################################################################ +# +# This file defines the model specifications for Ollama models. +# It contains model definitions for local language models +# accessible through the Ollama API. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["mistral-small3.1-24b"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "openai" +prompting_target = "anthropic" +structure_method = "instructor/openai_tools" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- Gemma Models ------------------------------------------------------------- +[gemma3-4b] +model_id = "gemma3:4b" +inputs = ["text"] +outputs = ["text"] +max_prompt_images = 3000 +costs = { input = 0, output = 0 } + +# --- Llama Models ------------------------------------------------------------- +[llama4-scout] +model_id = "llama4:scout" +inputs = ["text"] +outputs = ["text"] +max_prompt_images = 3000 +costs = { input = 0, output = 0 } + +# --- Mistral Models ----------------------------------------------------------- +["mistral-small3.1-24b"] +model_id = "mistral-small3.1:24b" +inputs = ["text"] +outputs = ["text"] +max_prompt_images = 3000 +costs = { input = 0, output = 0 } + +# --- Qwen Models -------------------------------------------------------------- +[qwen3-8b] +model_id = "qwen3:8b" +inputs = ["text"] +outputs = ["text"] +costs = { input = 0, output = 0 } +# TODO: support tokens diff --git a/.pipelex/inference/backends/openai.toml b/.pipelex/inference/backends/openai.toml new file mode 100644 index 0000000..0f0b1dc --- /dev/null +++ b/.pipelex/inference/backends/openai.toml @@ -0,0 +1,208 @@ +################################################################################ +# OpenAI Backend Configuration +################################################################################ +# +# This file defines the model specifications for OpenAI models. +# It contains model definitions for various LLM and image generation models +# accessible through the OpenAI API. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["gpt-4.1"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "openai_responses" +prompting_target = "openai" +structure_method = "instructor/openai_responses_tools" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- GPT-3.5 Series ----------------------------------------------------------- +["gpt-3.5-turbo"] +model_id = "gpt-3.5-turbo-1106" +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.5, output = 1.5 } + +# --- GPT-4 Series ------------------------------------------------------------- +[gpt-4] +inputs = ["text"] +outputs = ["text"] +costs = { input = 30.0, output = 60.0 } + +[gpt-4-turbo] +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 10.0, output = 30.0 } + +# --- GPT-4o Series ------------------------------------------------------------ +[gpt-4o-2024-11-20] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 2.5, output = 10.0 } + +[gpt-4o] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 2.5, output = 10.0 } + +[gpt-4o-mini-2024-07-18] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.15, output = 0.6 } + +[gpt-4o-mini] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.15, output = 0.6 } + +# --- GPT-4.1 Series ----------------------------------------------------------- +["gpt-4.1"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 2, output = 8 } + +["gpt-4.1-mini"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.4, output = 1.6 } + +["gpt-4.1-nano"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.1, output = 0.4 } + +# --- o Series ---------------------------------------------------------------- +[o1] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 15.0, output = 60.0 } +valued_constraints = { fixed_temperature = 1 } + +[o3-mini] +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 1.1, output = 4.4 } +valued_constraints = { fixed_temperature = 1 } + +[o3] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 10.0, output = 40.0 } +valued_constraints = { fixed_temperature = 1 } + +[o4-mini] +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 1.1, output = 4.4 } +valued_constraints = { fixed_temperature = 1 } + +# --- GPT-5 Series ------------------------------------------------------------- +[gpt-5] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +[gpt-5-mini] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.25, output = 2.0 } +valued_constraints = { fixed_temperature = 1 } + +[gpt-5-nano] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.05, output = 0.4 } +valued_constraints = { fixed_temperature = 1 } + +[gpt-5-chat] +model_id = "gpt-5-chat-latest" +inputs = ["text", "images", "pdf"] +outputs = ["text"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +[gpt-5-codex] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +# --- GPT-5.1 Series ------------------------------------------------------------- +["gpt-5.1"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } + +["gpt-5.1-chat"] +model_id = "gpt-5.1-chat-latest" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +["gpt-5.1-codex"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +["gpt-5.1-codex-max"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } + +# --- GPT-5.2 Series ------------------------------------------------------------- +["gpt-5.2"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.75, output = 14.0 } + +["gpt-5.2-chat"] +model_id = "gpt-5.2-chat-latest" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.75, output = 14.0 } +valued_constraints = { fixed_temperature = 1 } + +################################################################################ +# IMAGE GENERATION MODELS +################################################################################ + +# --- OpenAI Image Generation -------------------------------------------------- +[gpt-image-1] +sdk = "openai_img_gen" +model_type = "img_gen" +inputs = ["text"] +outputs = ["image"] +costs = { input = 10, output = 40 } + +[gpt-image-1-mini] +sdk = "openai_img_gen" +model_type = "img_gen" +inputs = ["text"] +outputs = ["image"] +costs = { input = 2.5, output = 8 } + +["gpt-image-1.5"] +sdk = "openai_img_gen" +model_type = "img_gen" +model_id = "gpt-image-1.5" +inputs = ["text"] +outputs = ["image"] +costs = { input = 8, output = 32 } diff --git a/.pipelex/inference/backends/pipelex_gateway.toml b/.pipelex/inference/backends/pipelex_gateway.toml new file mode 100644 index 0000000..bca075b --- /dev/null +++ b/.pipelex/inference/backends/pipelex_gateway.toml @@ -0,0 +1,41 @@ +################################################################################ +# Pipelex Gateway Local Overrides +################################################################################ +# +# TELEMETRY NOTICE: +# +# Using Pipelex Gateway enables identified telemetry tied to your API key +# (hashed for security). This is independent from your telemetry.toml settings. +# +# We collect only technical data (model names, token counts, latency, error rates). +# We do NOT collect prompts, completions, pipe codes, or business data. +# +# This allows us to monitor service quality, enforce fair usage, and support you. +# +################################################################################ +# +# WARNING: USE AT YOUR OWN RISK! +# +# The actual model configuration is fetched remotely from Pipelex servers. +# Any override in this file may cause unexpected behavior or failures, +# as the remote configuration may change at any time. +# +# If you must override, you may ONLY use these keys per model: +# - sdk +# - structure_method +# +# All other keys will be ignored. +# +# If you need custom configurations, consider using your own API keys +# with direct provider backends (openai, anthropic, etc.) instead. +# +# Documentation: +# https://docs.pipelex.com/home/7-configuration/config-technical/inference-backend-config/ +# Support: https://go.pipelex.com/discord +# +################################################################################ + +# Per-model overrides example: +# [gpt-4o] +# sdk = "gateway_completions" +# structure_method = "instructor/openai_tools" diff --git a/.pipelex/inference/backends/pipelex_inference.toml b/.pipelex/inference/backends/pipelex_inference.toml new file mode 100644 index 0000000..751c570 --- /dev/null +++ b/.pipelex/inference/backends/pipelex_inference.toml @@ -0,0 +1,205 @@ +################################################################################ +# Pipelex Inference Backend Configuration +################################################################################ +# +# This file defines the model specifications for the Pipelex Inference backend. +# It contains model definitions for various LLM and image generation models +# accessible through the Pipelex unified inference API. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["gpt-4.1"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "openai" +prompting_target = "anthropic" +structure_method = "instructor/openai_tools" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- OpenAI LLMs -------------------------------------------------------------- +[gpt-4o] +model_id = "pipelex/gpt-4o" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 2.75, output = 11.00 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +[gpt-4o-mini] +model_id = "pipelex/gpt-4o-mini" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.17, output = 0.66 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +["gpt-4.1"] +model_id = "pipelex/gpt-4.1" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 2, output = 8 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +["gpt-4.1-mini"] +model_id = "pipelex/gpt-4.1-mini" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.4, output = 1.6 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +["gpt-4.1-nano"] +model_id = "pipelex/gpt-4.1-nano" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.1, output = 0.4 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +[gpt-5-nano] +model_id = "pipelex/gpt-5-nano" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.05, output = 0.40 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +[gpt-5-mini] +model_id = "pipelex/gpt-5-mini" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.25, output = 2.00 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +[gpt-5-chat] +model_id = "pipelex/gpt-5-chat" +inputs = ["text", "images"] +outputs = ["text"] +costs = { input = 1.25, output = 10.00 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +[gpt-5] +model_id = "pipelex/gpt-5" +inputs = ["text", "images"] +outputs = ["text"] +costs = { input = 1.25, output = 10.00 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +["gpt-5.1"] +model_id = "pipelex/gpt-5.1" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.00 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +["gpt-5.1-chat"] +model_id = "pipelex/gpt-5.1-chat" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.00 } +sdk = "openai_responses" +structure_method = "instructor/openai_responses_tools" + +# --- Claude LLMs -------------------------------------------------------------- +["claude-4-sonnet"] +model_id = "pipelex/claude-4-sonnet" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 3, output = 15 } + +["claude-4.1-opus"] +model_id = "pipelex/claude-4.1-opus" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 15, output = 75 } + +["claude-4.5-sonnet"] +model_id = "pipelex/claude-4.5-sonnet" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 3, output = 15 } + +["claude-4.5-haiku"] +model_id = "pipelex/claude-4.5-haiku" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 1, output = 5 } + +["claude-4.5-opus"] +model_id = "pipelex/claude-4.5-opus" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 5, output = 25 } + +# --- Gemini LLMs -------------------------------------------------------------- +["gemini-2.0-flash"] +model_id = "pipelex/gemini-2.0-flash" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.10, output = 0.40 } + +["gemini-2.5-pro"] +model_id = "pipelex/gemini-2.5-pro" +inputs = ["text", "images"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 1.25, output = 10.0 } + +["gemini-2.5-flash"] +model_id = "pipelex/gemini-2.5-flash" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.30, output = 2.50 } + +["gemini-2.5-flash-lite"] +model_id = "pipelex/gemini-2.5-flash-lite" +inputs = ["text", "images"] +outputs = ["text", "structured"] +costs = { input = 0.10, output = 0.40 } + +["gemini-3.0-pro"] +model_id = "pipelex/gemini-3.0-pro" +inputs = ["text", "images"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 2, output = 12.0 } + +# --- XAI LLMs -------------------------------------------------------------- + +[grok-3] +model_id = "grok-3" +inputs = ["text"] +outputs = ["text"] +costs = { input = 3, output = 15 } + +[grok-3-mini] +model_id = "grok-3-mini" +inputs = ["text"] +outputs = ["text"] +costs = { input = 0.3, output = 0.5 } + +################################################################################ +# OCR and IMAGE GENERATION MODELS +################################################################################ + +# We are still working in giving you acces to OCR and image generation models +# and to the best models from Mistral through the Pipelex Inference backend. diff --git a/.pipelex/inference/backends/portkey.toml b/.pipelex/inference/backends/portkey.toml new file mode 100644 index 0000000..9a7ede7 --- /dev/null +++ b/.pipelex/inference/backends/portkey.toml @@ -0,0 +1,263 @@ +################################################################################ +# Portkey Configuration +################################################################################ +# +# This file defines the model specifications for the Portkey backend. +# It contains model definitions for various AI models. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["gpt-4.1"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "portkey_completions" +structure_method = "instructor/openai_tools" +prompting_target = "anthropic" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- OpenAI LLMs -------------------------------------------------------------- +[gpt-4o-mini] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.15, output = 0.6 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +[gpt-4o] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 2.5, output = 10.0 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +["gpt-4.1-nano"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.1, output = 0.4 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +["gpt-4.1-mini"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.4, output = 1.6 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +["gpt-4.1"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 2, output = 8 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +[o1] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 15.0, output = 60.0 } +valued_constraints = { fixed_temperature = 1 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +[o3-mini] +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 1.1, output = 4.4 } +valued_constraints = { fixed_temperature = 1 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +[o3] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 2, output = 8 } +valued_constraints = { fixed_temperature = 1 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +[o4-mini] +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 1.1, output = 4.4 } +valued_constraints = { fixed_temperature = 1 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +[gpt-5-nano] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.05, output = 0.4 } +valued_constraints = { fixed_temperature = 1 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +[gpt-5-mini] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.25, output = 2.0 } +valued_constraints = { fixed_temperature = 1 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +[gpt-5] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +["gpt-5.1"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +["gpt-5.1-codex"] +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 1.25, output = 10.0 } +valued_constraints = { fixed_temperature = 1 } +sdk = "portkey_responses" +structure_method = "instructor/openai_responses_tools" +x-portkey-provider = "@openai" + +# --- Claude LLMs -------------------------------------------------------------- +[claude-3-haiku] +model_id = "claude-3-haiku-20240307" +max_tokens = 4096 +inputs = ["text", "images"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 0.25, output = 1.25 } +x-portkey-provider = "@anthropic" + +["claude-3.7-sonnet"] +model_id = "claude-3-7-sonnet-20250219" +max_tokens = 8192 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } +x-portkey-provider = "@anthropic" + +[claude-4-sonnet] +model_id = "claude-sonnet-4-20250514" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } +x-portkey-provider = "@anthropic" + +[claude-4-opus] +model_id = "claude-opus-4-20250514" +max_tokens = 32000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } +x-portkey-provider = "@anthropic" + +["claude-4.1-opus"] +model_id = "claude-opus-4-1-20250805" +max_tokens = 32000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } +x-portkey-provider = "@anthropic" + +["claude-4.5-sonnet"] +model_id = "claude-sonnet-4-5-20250929" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 3.0, output = 15.0 } +x-portkey-provider = "@anthropic" + +["claude-4.5-haiku"] +model_id = "claude-haiku-4-5-20251001" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 1.0, output = 5.0 } +x-portkey-provider = "@anthropic" + +["claude-4.5-opus"] +model_id = "claude-opus-4-5-20251101" +max_tokens = 64000 +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 100 +costs = { input = 5.0, output = 25.0 } +x-portkey-provider = "@anthropic" + +# --- Gemini LLMs -------------------------------------------------------------- +["gemini-2.0-flash"] +model_id = "gemini-2.0-flash" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.10, output = 0.40 } +x-portkey-provider = "@google" + +["gemini-2.5-pro"] +model_id = "gemini-2.5-pro" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 1.25, output = 10.0 } +x-portkey-provider = "@google" + +["gemini-2.5-flash"] +model_id = "gemini-2.5-flash" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.30, output = 2.50 } +x-portkey-provider = "@google" + +["gemini-2.5-flash-lite"] +model_id = "gemini-2.5-flash-lite" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +costs = { input = 0.10, output = 0.40 } +x-portkey-provider = "@google" + +["gemini-3.0-pro"] +model_id = "gemini-3-pro-preview" +inputs = ["text", "images", "pdf"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 2, output = 12.0 } +x-portkey-provider = "@google" diff --git a/.pipelex/inference/backends/scaleway.toml b/.pipelex/inference/backends/scaleway.toml new file mode 100644 index 0000000..20fe792 --- /dev/null +++ b/.pipelex/inference/backends/scaleway.toml @@ -0,0 +1,67 @@ +################################################################################ +# Groq Backend Configuration +################################################################################ +# +# This file defines the model specifications for Scaleway models. +# It contains model definitions for various LLM models accessible through +# the Groq API, including text-only and vision-capable models. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots or slashes must be quoted (e.g., ["meta-llama/llama-4-scout"]) +# - Model costs are in USD per million tokens (input/output) +# - Vision models support max 5 images per request, 33MP max resolution +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "openai" +structure_method = "instructor/json" + +# --- DeepSeek Models ---------------------------------------------------------- +[deepseek-r1-distill-llama-70b] +max_tokens = 32768 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.90, output = 0.90 } + +# --- Meta Llama 3.x Series ---------------------------------------------------- +["llama-3.1-8b-instruct"] +max_tokens = 131072 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.2, output = 0.2 } + +["llama-3.3-70b-instruct"] +max_tokens = 32768 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.90, output = 0.90 } + +# --- OpenAI GPT-OSS Models ---------------------------------------------------- +[gpt-oss-120b] +max_tokens = 65536 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.15, output = 0.60 } + +# --- Qwen 3 ------------------------------------------------------------------- +[qwen3-235b-a22b-instruct-2507] +max_tokens = 40960 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.75, output = 2.25 } + +[qwen3-coder-30b-a3b-instruct] +max_tokens = 40960 +inputs = ["text"] +outputs = ["text", "structured"] +costs = { input = 0.20, output = 0.80 } diff --git a/.pipelex/inference/backends/vertexai.toml b/.pipelex/inference/backends/vertexai.toml new file mode 100644 index 0000000..1ebab79 --- /dev/null +++ b/.pipelex/inference/backends/vertexai.toml @@ -0,0 +1,54 @@ +################################################################################ +# VertexAI Backend Configuration +################################################################################ +# +# This file defines the model specifications for Google VertexAI models. +# It contains model definitions for Gemini language models +# accessible through the Google VertexAI API. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["gemini-2.0-flash"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "openai" +prompting_target = "gemini" +structure_method = "instructor/vertexai_tools" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- Gemini 2.0 Series -------------------------------------------------------- +["gemini-2.0-flash"] +model_id = "google/gemini-2.0-flash" +inputs = ["text", "images"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 0.1, output = 0.4 } + +# --- Gemini 2.5 Series -------------------------------------------------------- +["gemini-2.5-pro"] +model_id = "google/gemini-2.5-pro" +inputs = ["text", "images"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 1.25, output = 10.0 } + +["gemini-2.5-flash"] +model_id = "google/gemini-2.5-flash" +inputs = ["text", "images"] +outputs = ["text", "structured"] +max_prompt_images = 3000 +costs = { input = 0.30, output = 2.50 } diff --git a/.pipelex/inference/backends/xai.toml b/.pipelex/inference/backends/xai.toml new file mode 100644 index 0000000..3045344 --- /dev/null +++ b/.pipelex/inference/backends/xai.toml @@ -0,0 +1,56 @@ +################################################################################ +# XAI Backend Configuration +################################################################################ +# +# This file defines the model specifications for XAI (formerly Twitter AI) models. +# It contains model definitions for Grok language models +# accessible through the XAI API. +# +# Configuration structure: +# - Each model is defined in its own section with the model name as the header +# - Headers with dots must be quoted (e.g., ["grok-3"]) +# - Model costs are in USD per million tokens (input/output) +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +################################################################################ + +################################################################################ +# MODEL DEFAULTS +################################################################################ + +[defaults] +model_type = "llm" +sdk = "openai" +prompting_target = "anthropic" +structure_method = "instructor/openai_tools" + +################################################################################ +# LANGUAGE MODELS +################################################################################ + +# --- Grok 3 Series ------------------------------------------------------------ +[grok-3] +model_id = "grok-3" +inputs = ["text"] +outputs = ["text"] +costs = { input = 3, output = 15 } + +[grok-3-mini] +model_id = "grok-3-mini" +inputs = ["text"] +outputs = ["text"] +costs = { input = 0.3, output = 0.5 } + +[grok-3-fast] +model_id = "grok-3-fast-latest" +inputs = ["text"] +outputs = ["text"] +costs = { input = 5, output = 25 } + +[grok-3-mini-fast] +model_id = "grok-3-mini-fast-latest" +inputs = ["text"] +outputs = ["text"] +costs = { input = 0.15, output = 4 } diff --git a/.pipelex/inference/deck/1_llm_deck.toml b/.pipelex/inference/deck/1_llm_deck.toml new file mode 100644 index 0000000..6b9d8c3 --- /dev/null +++ b/.pipelex/inference/deck/1_llm_deck.toml @@ -0,0 +1,79 @@ +#################################################################################################### +# Pipelex Model Deck - LLM Configuration +#################################################################################################### +# +# This file defines model defaults, aliases, and presets for LLMs +# +# Model Reference Syntax: +# - Preset: $preset_name or preset:preset_name +# - Alias: @alias_name or alias:alias_name +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +#################################################################################################### + +#################################################################################################### +# LLM Default Choices +#################################################################################################### + +[llm.choice_defaults] +default_temperature = 0.5 +for_text = "@default-general" +for_object = "@default-general" + +#################################################################################################### +# LLM Aliases +#################################################################################################### + +[llm.aliases] +best-gpt = "gpt-5.2" +best-claude = "claude-4.5-opus" +best-gemini = "gemini-3.0-pro" +best-mistral = "mistral-large-3" + +# Default aliases (first choice from waterfalls) +default-general = "claude-4.5-sonnet" +default-premium = "claude-4.5-opus" +default-premium-vision = "claude-4.5-opus" +default-premium-structured = "claude-4.5-opus" +default-large-context-code = "gemini-3.0-pro" +default-large-context-text = "gemini-2.5-flash" +default-small = "gemini-2.5-flash-lite" +default-small-structured = "gemini-2.5-flash-lite" +default-small-vision = "gemini-2.5-flash-lite" +default-small-creative = "gemini-2.5-flash-lite" + +#################################################################################################### +# LLM Presets +#################################################################################################### + +[llm.presets] + +# Writing +writing-factual = { model = "@default-premium", temperature = 0.1 } +writing-creative = { model = "@default-premium", temperature = 0.9 } + +# Retrieval +retrieval = { model = "@default-large-context-text", temperature = 0.1 } + +# Engineering +engineering-structured = { model = "@default-premium-structured", temperature = 0.2 } +engineering-code = { model = "@default-premium", temperature = 0.1 } +engineering-codebase-analysis = { model = "@best-gemini", temperature = 0.1 } + +# Vision +vision = { model = "@default-premium-vision", temperature = 0.5 } +vision-cheap = { model = "@default-small-vision", temperature = 0.5 } +vision-diagram = { model = "@default-premium-vision", temperature = 0.3 } +vision-table = { model = "@default-premium-vision", temperature = 0.3 } + +# Image generation prompting +img-gen-prompting = { model = "@default-premium", temperature = 0.5 } +img-gen-prompting-cheap = { model = "@default-small", temperature = 0.5 } + +# Testing +testing-text = { model = "@default-small", temperature = 0.5 } +testing-structured = { model = "@default-small-structured", temperature = 0.1 } +testing-vision = { model = "@default-small-vision", temperature = 0.5 } +testing-vision-structured = { model = "@default-small-vision", temperature = 0.5 } diff --git a/.pipelex/inference/deck/2_img_gen_deck.toml b/.pipelex/inference/deck/2_img_gen_deck.toml new file mode 100644 index 0000000..8b1725c --- /dev/null +++ b/.pipelex/inference/deck/2_img_gen_deck.toml @@ -0,0 +1,49 @@ +#################################################################################################### +# Pipelex Model Deck - Image Generation Configuration +#################################################################################################### +# +# This file defines model aliases and presets for image generation models +# +# Model Reference Syntax: +# - Preset: $preset_name or preset:preset_name +# - Alias: @alias_name or alias:alias_name +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +#################################################################################################### + +#################################################################################################### +# Image Generation Default Choices +#################################################################################################### + +[img_gen] +default_quality = "medium" +choice_default = "$gen-image" + +#################################################################################################### +# Image Generation Aliases +#################################################################################################### + +[img_gen.aliases] +best-gpt = "gpt-image-1.5" +best-gemini = "nano-banana-pro" +best-blackforestlabs = "flux-2-pro" + +default-general = "flux-2-pro" +default-premium = "nano-banana-pro" +default-small = "gpt-image-1-mini" + +#################################################################################################### +# Image Generation Presets +#################################################################################################### + +[img_gen.presets] + +# General purpose +gen-image = { model = "@default-general", quality = "medium" } +gen-image-fast = { model = "@default-small", quality = "low" } +gen-image-high-quality = { model = "@default-premium", quality = "high" } + +# Testing +gen-image-testing = { model = "@default-small", quality = "low" } diff --git a/.pipelex/inference/deck/3_extract_deck.toml b/.pipelex/inference/deck/3_extract_deck.toml new file mode 100644 index 0000000..1092489 --- /dev/null +++ b/.pipelex/inference/deck/3_extract_deck.toml @@ -0,0 +1,42 @@ +#################################################################################################### +# Pipelex Model Deck - Base Configuration +#################################################################################################### +# +# This file defines model aliases and presets for Document extraction models, including +# extraction of text and images from documents and OCR and text extraction from images. +# +# Model Reference Syntax: +# - Preset: $preset_name or preset:preset_name +# - Alias: @alias_name or alias:alias_name +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +#################################################################################################### + +#################################################################################################### +# Document Extraction Default Choices +#################################################################################################### + +[extract] +choice_default = "$extract-all-from-document" + +#################################################################################################### +# Aliases +#################################################################################################### + +[extract.aliases] +default-extract-document = "azure-document-intelligence" +default-extract-text-from-pdf = "pypdfium2-extract-pdf" +default-software-extract-no-inference = "pypdfium2-extract-pdf" + +#################################################################################################### +# Extract Presets +#################################################################################################### + +[extract.presets] +extract-all-from-document = { model = "@default-extract-document", max_nb_images = 100, image_min_size = 50 } +extract-text-from-pdf = { model = "@default-extract-text-from-pdf", max_nb_images = 100, image_min_size = 50 } + +# Testing +extract-testing = { model = "@default-software-extract-no-inference", max_nb_images = 100, image_min_size = 50 } diff --git a/.pipelex/inference/deck/x_custom_extract_deck.toml b/.pipelex/inference/deck/x_custom_extract_deck.toml new file mode 100644 index 0000000..c3c3b9f --- /dev/null +++ b/.pipelex/inference/deck/x_custom_extract_deck.toml @@ -0,0 +1,39 @@ +#################################################################################################### +# Pipelex Model Deck - Custom Configurations for Document Extraction Models +#################################################################################################### +# +# This file allows you to override or complete the base model decks. +# +# ADVANCED USERS ONLY: This file is for users who bring their own API keys and connect directly +# to AI providers (Azure, Mistral, etc.) without using the Pipelex Gateway. +# +# If you're using the standard Pipelex Gateway setup, you don't need to modify this file. +# The Gateway handles model routing automatically and supports all available models. +# +# Waterfalls are useful when using multiple backends directly - they define ordered lists +# of models that are resolved at configuration time based on which backends are available. +# This enables defining pipelines that work across different environments with varying +# backend configurations. +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +#################################################################################################### + + +#################################################################################################### +# Waterfalls — ordered lists of models resolved at configuration time by backend availability +# +# Example (uncomment to use): +# [extract.waterfalls] +# document_extractor = ["azure-document-intelligence", "mistral-document-ai-2505"] +# pdf_text_extractor = [ +# "azure-document-intelligence", +# "mistral-document-ai-2505", +# "pypdfium2-extract-pdf", +# ] +# image_text_extractor = [ +# "azure-document-intelligence", +# "mistral-document-ai-2505", +# ] +#################################################################################################### diff --git a/.pipelex/inference/deck/x_custom_llm_deck.toml b/.pipelex/inference/deck/x_custom_llm_deck.toml new file mode 100644 index 0000000..eb47480 --- /dev/null +++ b/.pipelex/inference/deck/x_custom_llm_deck.toml @@ -0,0 +1,71 @@ +#################################################################################################### +# Pipelex Model Deck - Custom Configurations for LLMs +#################################################################################################### +# +# This file allows you to override or complete the base model decks. +# +# ADVANCED USERS ONLY: This file is for users who bring their own API keys and connect directly +# to AI providers (OpenAI, Anthropic, Google, etc.) without using the Pipelex Gateway. +# +# If you're using the standard Pipelex Gateway setup, you don't need to modify this file. +# The Gateway handles model routing automatically and supports all available models. +# +# Waterfalls are useful when using multiple backends directly - they define ordered lists +# of models that are resolved at configuration time based on which backends are available. +# This enables defining pipelines that work across different environments with varying +# backend configurations. +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +#################################################################################################### + +#################################################################################################### +# LLM Deck overrides +#################################################################################################### + +[llm.choice_overrides] +for_text = "disabled" +for_object = "disabled" + + +#################################################################################################### +# Waterfalls — ordered lists of models resolved at configuration time by backend availability +# +# Example (uncomment to use): +# [llm.waterfalls] +# premium-llm = ["claude-4.5-opus", "gemini-3.0-pro", "gpt-5.2", "grok-4"] +# premium-llm-vision = [ +# "claude-4.5-opus", +# "gemini-3.0-pro", +# "gpt-5.2", +# "grok-4-fast-reasoning", +# ] +# premium-llm-structured = [ +# "claude-4.5-opus", +# "gemini-3.0-pro", +# "gpt-5.2", +# "grok-4", +# ] +# large-context-llm-code = [ +# "gemini-3.0-pro", +# "claude-4.5-opus", +# "gpt-5.2", +# "grok-4-fast-reasoning", +# ] +# large-context-llm-text = ["gemini-2.5-flash", "claude-4.5-sonnet"] +# small-llm = [ +# "gemini-2.5-flash-lite", +# "gpt-4o-mini", +# "claude-3-haiku", +# "phi-4", +# "grok-3-mini", +# ] +# small-llm-structured = [ +# "gemini-2.5-flash-lite", +# "gpt-4o-mini", +# "claude-3-haiku", +# ] +# small-llm-vision = ["gemini-2.5-flash-lite", "gpt-4o-mini", "claude-3-haiku"] +# small-llm-creative = ["gemini-2.5-flash-lite", "gpt-4o-mini", "claude-3-haiku"] +#################################################################################################### diff --git a/.pipelex/inference/routing_profiles.toml b/.pipelex/inference/routing_profiles.toml new file mode 100644 index 0000000..59a77db --- /dev/null +++ b/.pipelex/inference/routing_profiles.toml @@ -0,0 +1,146 @@ +# Routing profile library - Routes models to their backends +# ========================================================================================= +# This file controls which backend serves which model. +# Simply change the 'active' field to switch profiles, +# or you can add your own custom profiles. +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# ========================================================================================= + +# Which profile to use (change this to switch routing) +active = "all_pipelex_gateway" + +# We recommend using the "all_pipelex_gateway" profile to get a head start with all models. +# To use the Pipelex Gateway backend: +# 1. Get your API key at https://app.pipelex.com (free credits included) +# 2. Add it to your .env file: PIPELEX_GATEWAY_API_KEY=your-key-here +# 3. Run `pipelex init` and accept the Gateway terms of service + +# ========================================================================================= +# Routing Profiles +# ========================================================================================= + +[profiles.all_pipelex_gateway] +description = "Use Pipelex Gateway for all its supported models" +default = "pipelex_gateway" + +[profiles.all_anthropic] +description = "Use Anthropic backend for all its supported models" +default = "anthropic" + +[profiles.all_azure_openai] +description = "Use Azure OpenAI backend for all its supported models" +default = "azure_openai" + +[profiles.all_bedrock] +description = "Use Bedrock backend for all its supported models" +default = "bedrock" + +[profiles.all_blackboxai] +description = "Use BlackBoxAI backend for all its supported models" +default = "blackboxai" + +[profiles.all_fal] +description = "Use FAL backend for all its supported models" +default = "fal" + +[profiles.all_google] +description = "Use Google GenAI backend for all its supported models" +default = "google" + +[profiles.all_groq] +description = "Use groq backend for all its supported models" +default = "groq" + +[profiles.all_huggingface] +description = "Use HuggingFace backend for all its supported models" +default = "huggingface" + +[profiles.all_mistral] +description = "Use Mistral backend for all its supported models" +default = "mistral" + +[profiles.all_ollama] +description = "Use Ollama backend for all its supported models" +default = "ollama" + +[profiles.all_openai] +description = "Use OpenAI backend for all its supported models" +default = "openai" + +[profiles.all_portkey] +description = "Use Portkey backend for all its supported models" +default = "portkey" + +[profiles.all_scaleway] +description = "Use Scaleway backend for all its supported models" +default = "scaleway" + +[profiles.all_vertexai] +description = "Use Vertex AI backend for all its supported models" +default = "vertexai" + +[profiles.all_xai] +description = "Use xAI backend for all its supported models" +default = "xai" + +[profiles.all_internal] +description = "Use internal backend for all its supported models" +default = "internal" + +# ========================================================================================= +# Custom Profiles +# ========================================================================================= +# Add your own profiles below following the same pattern: +# +# [profiles.your_profile_name] +# description = "What this profile does" +# default = "backend-name" # Where to route models by default +# [profiles.your_profile_name.routes] +# "model-pattern" = "backend-name" # Specific routing rules +# +# Pattern matching supports: +# - Exact names: "gpt-4o-mini" +# - Wildcards: "claude-*" (matches all models starting with claude-) +# - Partial wildcards: "*-sonnet" (matches all sonnet variants) + +# ========================================================================================= +# Example of a custom routing profile with mostly pattern matching and one specific model +# ========================================================================================= +[profiles.example_routing_using_patterns] +description = "Example routing profile using patterns" +default = "pipelex_gateway" + +[profiles.example_routing_using_patterns.routes] +# Pattern matching: "model-pattern" = "backend-name" +"gpt-*" = "azure_openai" +"claude-*" = "bedrock" +"gemini-*" = "google" +"grok-*" = "xai" +"*-sdxl" = "fal" +"flux-*" = "fal" +"gpt-image-1" = "openai" + +# ========================================================================================= +# Example of a custom routing profile with specific model matching +# ========================================================================================= + +[profiles.example_routing_using_specific_models] +description = "Example routing profile using specific models" + +[profiles.example_routing_using_specific_models.routes] +"gpt-5-nano" = "pipelex_gateway" +"gpt-4o-mini" = "blackboxai" +"gpt-5-mini" = "openai" +"gpt-5-chat" = "azure_openai" + +"claude-4-sonnet" = "pipelex_gateway" +"claude-3.7-sonnet" = "blackboxai" + +"gemini-2.5-flash-lite" = "pipelex_gateway" +"gemini-2.5-flash" = "blackboxai" +"gemini-2.5-pro" = "vertexai" + +"grok-3" = "pipelex_gateway" +"grok-3-mini" = "xai" diff --git a/.pipelex/pipelex.toml b/.pipelex/pipelex.toml new file mode 100644 index 0000000..5787db6 --- /dev/null +++ b/.pipelex/pipelex.toml @@ -0,0 +1,189 @@ +#################################################################################################### +# Pipelex Configuration File +#################################################################################################### +# +# This configuration file is copied to client projects' .pipelex/ directory when running: +# `pipelex init config` +# +# Purpose: +# - This file allows you to override Pipelex's default settings for specific projects +# - All values below are set to their defaults - modify them as needed +# - The values here will override the defaults from the Pipelex package +# +# Finding Available Settings: +# - See the full default configuration in: pipelex/pipelex.toml (in the Pipelex package) +# - See the configuration structure classes in: pipelex/config.py and pipelex/cogt/config_cogt.py +# +# Common customizations include: +# - Logging levels and behavior +# - Excluded directories for scanning +# - LLM prompt dumping for debugging +# - Feature flags +# - Observer and reporting output directories +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +#################################################################################################### + +#################################################################################################### +# Pipeline Execution Config +#################################################################################################### + +[pipelex.pipeline_execution_config] +# Set to false to disable conversion of incoming data URLs to pipelex-storage:// URIs +is_normalize_data_urls_to_storage = true +# Set to false to disable generation of execution graphs +is_generate_graph = true + +[pipelex.pipeline_execution_config.graph_config.data_inclusion] +# Control what data is included in graph outputs +stuff_json_content = true +stuff_text_content = true +stuff_html_content = true +error_stack_traces = true + +[pipelex.pipeline_execution_config.graph_config.graphs_inclusion] +# Control which graph outputs are generated +graphspec_json = true +mermaidflow_mmd = true +mermaidflow_html = true +reactflow_viewspec = true +reactflow_html = true + +[pipelex.pipeline_execution_config.graph_config.reactflow_config] +# Customize ReactFlow graph rendering +edge_type = "bezier" # Options: "bezier", "smoothstep", "step", "straight" +nodesep = 50 # Horizontal spacing between nodes +ranksep = 30 # Vertical spacing between ranks/levels +initial_zoom = 1.0 # Initial zoom level (1.0 = 100%) +pan_to_top = true # Pan to show top of graph on load + +#################################################################################################### +# Storage Config +#################################################################################################### + +[pipelex.storage_config] +# Storage method: "local", "in_memory" (default), "s3", or "gcp" +method = "in_memory" +# Whether to fetch remote HTTP URLs and store them locally +is_fetch_remote_content_enabled = true + +[pipelex.storage_config.local] +# Local storage settings +uri_format = "{primary_id}/{secondary_id}/{hash}.{extension}" +local_storage_path = ".pipelex/storage" + +[pipelex.storage_config.in_memory] +# In-memory storage settings +uri_format = "{primary_id}/{secondary_id}/{hash}.{extension}" + +[pipelex.storage_config.s3] +# AWS S3 storage settings (requires boto3: `pip install pipelex[s3]`) +uri_format = "{primary_id}/{secondary_id}/{hash}.{extension}" +bucket_name = "" +region = "" +signed_urls_lifespan_seconds = 3600 # Set to "disabled" for public URLs + +[pipelex.storage_config.gcp] +# Google Cloud Storage settings (requires google-cloud-storage: `pip install pipelex[gcp-storage]`) +uri_format = "{primary_id}/{secondary_id}/{hash}.{extension}" +bucket_name = "" +project_id = "" +signed_urls_lifespan_seconds = 3600 # Set to "disabled" for public URLs + +#################################################################################################### +# Scan Config +#################################################################################################### + +[pipelex.scan_config] +# Directories to exclude when scanning for pipeline files +excluded_dirs = [ + ".venv", + "venv", + "env", + ".env", + "virtualenv", + ".virtualenv", + ".git", + "__pycache__", + ".pytest_cache", + ".mypy_cache", + ".ruff_cache", + "node_modules", + "results", +] + +#################################################################################################### +# Builder Config +#################################################################################################### + +[pipelex.builder_config] +# Settings for generated pipelines +default_output_dir = "." +default_bundle_file_name = "bundle" +default_directory_base_name = "pipeline" + +#################################################################################################### +# Log Config +#################################################################################################### + +[pipelex.log_config] +# Default logging level: "DEBUG", "INFO", "WARNING", "ERROR" +default_log_level = "INFO" +# Log output target: "stdout" or "stderr" +console_log_target = "stdout" +console_print_target = "stdout" + +[pipelex.log_config.package_log_levels] +# Log levels for specific packages (use "-" instead of "." in package names) +pipelex = "INFO" + +#################################################################################################### +# Feature Config +#################################################################################################### + +[pipelex.feature_config] +# WIP/Experimental feature flags +is_reporting_enabled = true + +#################################################################################################### +# Reporting Config +#################################################################################################### + +[pipelex.reporting_config] +# Cost reporting settings +is_log_costs_to_console = false +is_generate_cost_report_file_enabled = false +cost_report_dir_path = "reports" +cost_report_base_name = "cost_report" +cost_report_extension = "csv" +cost_report_unit_scale = 1.0 + +#################################################################################################### +# Cogt (Cognitive Tools) Config +#################################################################################################### + +[cogt.model_deck_config] +# Model fallback behavior: if true, uses secondary model options when primary fails +is_model_fallback_enabled = true +# Reaction to missing presets: "raise", "log", or "none" +missing_presets_reaction = "log" + +[cogt.tenacity_config] +# Retry behavior for API calls +max_retries = 50 # Maximum number of retry attempts before giving up +wait_multiplier = 0.2 # Multiplier applied to the wait time between retries (in seconds) +wait_max = 20 # Maximum wait time between retries (in seconds) +wait_exp_base = 1.3 # Base for exponential backoff calculation + +[cogt.llm_config] +# Enable dumping of LLM inputs/outputs for debugging +is_dump_text_prompts_enabled = false +is_dump_response_text_enabled = false + +[cogt.llm_config.instructor_config] +# Enable dumping of structured content generation details for debugging +is_dump_kwargs_enabled = false +is_dump_response_enabled = false +is_dump_error_enabled = false diff --git a/.pipelex/pipelex_service.toml b/.pipelex/pipelex_service.toml new file mode 100644 index 0000000..afe39a2 --- /dev/null +++ b/.pipelex/pipelex_service.toml @@ -0,0 +1,19 @@ +#################################################################################################### +# Pipelex Service Configuration +#################################################################################################### +# +# This file stores settings related to Pipelex managed services. +# Currently used for Pipelex Gateway terms acceptance. +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +#################################################################################################### + +[agreement] +# Set to true after accepting Pipelex terms of service. +terms_accepted = true + +# Note: when using pipelex_gateway, telemetry is enabled to monitor service usage. +# We collect technical data (model, pipe type...) and quantitative data (token counts...) +# but NOT your content, pipe codes, or output class names. diff --git a/.pipelex/telemetry.toml b/.pipelex/telemetry.toml new file mode 100644 index 0000000..eb2c537 --- /dev/null +++ b/.pipelex/telemetry.toml @@ -0,0 +1,92 @@ +#################################################################################################### +# Custom Telemetry Configuration +#################################################################################################### +# +# This file controls YOUR custom telemetry settings for observability and analytics. +# Configure your own PostHog, Langfuse, or OTLP-compatible backends here. +# +# NOTE: When using Pipelex Gateway, identified telemetry is automatically enabled +# (tied to your Gateway API key, hashed for security). This allows us to monitor +# service quality, enforce fair usage, and provide you with better support. +# Gateway telemetry operates independently from your settings below - you can have both! +# +# To disable all telemetry, set the DO_NOT_TRACK=1 environment variable. +# +# Documentation: https://docs.pipelex.com +# Support: https://go.pipelex.com/discord +# +#################################################################################################### + +# ────────────────────────────────────────────────────────────────────────────── +# PostHog Configuration (Event tracking + AI span tracing) +# ────────────────────────────────────────────────────────────────────────────── + +[custom_posthog] +mode = "off" # Values: "off" | "anonymous" | "identified" +# user_id = "your_user_id" # Required when mode = "identified" +endpoint = "${POSTHOG_ENDPOINT}" # Default: https://us.i.posthog.com (or https://eu.i.posthog.com for EU) +api_key = "${POSTHOG_API_KEY}" # Get from PostHog Project Settings +geoip = true # Enable GeoIP lookup +debug = false # Enable PostHog debug mode +redact_properties = [ + "prompt", + "system_prompt", + "response", + "file_path", + "url", +] # Event properties to redact + +# AI span tracing to YOUR PostHog (does NOT affect Langfuse/OTLP - they receive full data) +[custom_posthog.tracing] +enabled = false # Send AI spans to your PostHog + +# Privacy controls for data sent to YOUR PostHog only +[custom_posthog.tracing.capture] +content = false # Capture prompt/completion content +# content_max_length = 1000 # Max length for captured content (omit for unlimited) +pipe_codes = false # Include pipe codes in span names/attributes +output_class_names = false # Include output class names in span names/attributes + +# ────────────────────────────────────────────────────────────────────────────── +# Portkey SDK Configuration +# ────────────────────────────────────────────────────────────────────────────── + +[custom_portkey] +force_debug_enabled = false +force_tracing_enabled = false + +# ────────────────────────────────────────────────────────────────────────────── +# Langfuse Integration +# Note: Langfuse receives FULL span data (no redaction) +# ────────────────────────────────────────────────────────────────────────────── + +[langfuse] +enabled = false +# endpoint = "https://cloud.langfuse.com" # Override for self-hosted Langfuse +# public_key = "${LANGFUSE_PUBLIC_KEY}" # Langfuse public key +# secret_key = "${LANGFUSE_SECRET_KEY}" # Langfuse secret key + +# ────────────────────────────────────────────────────────────────────────────── +# Additional OTLP Exporters (array for multiple) +# Note: OTLP exporters receive FULL span data (no redaction) +# ────────────────────────────────────────────────────────────────────────────── + +# [[otlp]] +# name = "my-collector" # Identifier for logging +# endpoint = "https://..." # OTLP endpoint URL +# headers = { Authorization = "Bearer ${OTLP_AUTH_TOKEN}" } # Headers for OTLP export + +# ────────────────────────────────────────────────────────────────────────────── +# Custom Telemetry Allowed Modes +# Controls which integration modes can use custom telemetry settings above. +# ────────────────────────────────────────────────────────────────────────────── + +[telemetry_allowed_modes] +ci = false # CI environments don't use custom telemetry +cli = true # CLI usage allows custom telemetry +docker = true # Docker deployments allow custom telemetry +fastapi = true # FastAPI integrations allow custom telemetry +mcp = true # MCP integrations allow custom telemetry +n8n = true # n8n integrations allow custom telemetry +pytest = false # Tests don't use custom telemetry +python = false # Direct Python SDK usage doesn't use custom telemetry by default diff --git a/.windsurfrules.md b/.windsurfrules.md index 6125caa..af4572e 100644 --- a/.windsurfrules.md +++ b/.windsurfrules.md @@ -23,10 +23,10 @@ A pipeline file has three main sections: #### Domain Statement ```plx -domain = "domain_name" +domain = "domain_code" description = "Description of the domain" # Optional ``` -Note: The domain name usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. +Note: The domain code usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. #### Concept Definitions @@ -62,7 +62,7 @@ For details on how to structure concepts with fields, see the "Structuring Model ### Pipe Base Definition ```plx -[pipe.your_pipe_name] +[pipe.your_pipe_code] type = "PipeLLM" description = "A description of what your pipe does" inputs = { input_1 = "ConceptName1", input_2 = "ConceptName2" } @@ -471,7 +471,7 @@ The PipeExtract operator is used to extract text and images from an image or a P [pipe.extract_info] type = "PipeExtract" description = "extract the information" -inputs = { document = "PDF" } # or { image = "Image" } if it's an image. This is the only input. +inputs = { document = "Document" } # or { image = "Image" } if it's an image. This is the only input. output = "Page" ``` @@ -480,7 +480,7 @@ Using Extract Model Settings: [pipe.extract_with_model] type = "PipeExtract" description = "Extract with specific model" -inputs = { document = "PDF" } +inputs = { document = "Document" } output = "Page" model = "base_extract_mistral" # Use predefined extract preset or model alias ``` @@ -588,15 +588,16 @@ $sales_rep.phone | $sales_rep.email """ ``` -#### Key Parameters +#### Key Parameters (Template Mode) -- `template`: Inline template string (mutually exclusive with template_name) +- `template`: Inline template string (mutually exclusive with template_name and construct) - `template_name`: Name of a predefined template (mutually exclusive with template) - `template_category`: Template type ("llm_prompt", "html", "markdown", "mermaid", etc.) - `templating_style`: Styling options for template rendering - `extra_context`: Additional context variables for template For more control, you can use a nested `template` section instead of the `template` field: + - `template.template`: The template string - `template.category`: Template type - `template.templating_style`: Styling options @@ -604,9 +605,143 @@ For more control, you can use a nested `template` section instead of the `templa #### Template Variables Use the same variable insertion rules as PipeLLM: + - `@variable` for block insertion (multi-line content) - `$variable` for inline insertion (short text) +#### Construct Mode (for StructuredContent Output) + +PipeCompose can also generate `StructuredContent` objects using the `construct` section. This mode composes field values from fixed values, variable references, templates, or nested structures. + +**When to use construct mode:** + +- You need to output a structured object (not just Text) +- You want to deterministically compose fields from existing data +- No LLM is needed - just data composition and templating + +##### Basic Construct Usage + +```plx +[concept.SalesSummary] +description = "A structured sales summary" + +[concept.SalesSummary.structure] +report_title = { type = "text", description = "Title of the report" } +customer_name = { type = "text", description = "Customer name" } +deal_value = { type = "number", description = "Deal value" } +summary_text = { type = "text", description = "Generated summary text" } + +[pipe.compose_summary] +type = "PipeCompose" +description = "Compose a sales summary from deal data" +inputs = { deal = "Deal" } +output = "SalesSummary" + +[pipe.compose_summary.construct] +report_title = "Monthly Sales Report" +customer_name = { from = "deal.customer_name" } +deal_value = { from = "deal.amount" } +summary_text = { template = "Deal worth $deal.amount with $deal.customer_name" } +``` + +##### Field Composition Methods + +There are four ways to define field values in a construct: + +**1. Fixed Value (literal)** + +Use a literal value directly: + +```plx +[pipe.compose_report.construct] +report_title = "Annual Report" +report_year = 2024 +is_draft = false +``` + +**2. Variable Reference (`from`)** + +Get a value from working memory using a dotted path: + +```plx +[pipe.compose_report.construct] +customer_name = { from = "deal.customer_name" } +total_amount = { from = "order.total" } +street_address = { from = "customer.address.street" } +``` + +**3. Template (`template`)** + +Render a Jinja2 template with variable substitution: + +```plx +[pipe.compose_report.construct] +invoice_number = { template = "INV-$order.id" } +summary = { template = "Deal worth $deal.amount with $deal.customer_name on {{ current_date }}" } +``` + +**4. Nested Construct** + +For nested structures, use a TOML subsection: + +```plx +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +##### Complete Construct Example + +```plx +domain = "invoicing" + +[concept.Address] +description = "A postal address" + +[concept.Address.structure] +street = { type = "text", description = "Street address" } +city = { type = "text", description = "City name" } +country = { type = "text", description = "Country name" } + +[concept.Invoice] +description = "An invoice document" + +[concept.Invoice.structure] +invoice_number = { type = "text", description = "Invoice number" } +total = { type = "number", description = "Total amount" } + +[pipe.compose_invoice] +type = "PipeCompose" +description = "Compose an invoice from order and customer data" +inputs = { order = "Order", customer = "Customer" } +output = "Invoice" + +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +##### Key Parameters (Construct Mode) + +- `construct`: Dictionary mapping field names to their composition rules +- Each field can be: + - A literal value (string, number, boolean) + - A dict with `from` key for variable reference + - A dict with `template` key for template rendering + - A nested dict for nested structures + +**Note:** You must use either `template` or `construct`, not both. They are mutually exclusive. + ### PipeImgGen operator The PipeImgGen operator is used to generate images using AI image generation models. @@ -952,13 +1087,13 @@ So here are a few concrete examples of calls to execute_pipeline with various wa }, ) -## Here we have a single input and it's a PDF. -## Because PDFContent is a native concept, we can use it directly as a value, +## Here we have a single input and it's a document. +## Because DocumentContent is a native concept, we can use it directly as a value, ## the system knows what content it corresponds to: pipe_output = await execute_pipeline( pipe_code="power_extractor_dpe", inputs={ - "document": PDFContent(url=pdf_url), + "document": DocumentContent(url=pdf_url), }, ) @@ -1081,82 +1216,4 @@ result_list = pipe_output.main_stuff_as_items(item_type=GanttChart) ``` --- - -## Rules to choose LLM models used in PipeLLMs. - -### LLM Configuration System - -In order to use it in a pipe, an LLM is referenced by its llm_handle (alias) and possibly by an llm_preset. -LLM configurations are managed through the new inference backend system with files located in `.pipelex/inference/`: - -- **Model Deck**: `.pipelex/inference/deck/base_deck.toml` and `.pipelex/inference/deck/overrides.toml` -- **Backends**: `.pipelex/inference/backends.toml` and `.pipelex/inference/backends/*.toml` -- **Routing**: `.pipelex/inference/routing_profiles.toml` - -### LLM Handles - -An llm_handle can be either: -1. **A direct model name** (like "gpt-4o-mini", "claude-3-sonnet") - automatically available for all models loaded by the inference backend system -2. **An alias** - user-defined shortcuts that map to model names, defined in the `[aliases]` section: - -```toml -[aliases] -base-claude = "claude-4.5-sonnet" -base-gpt = "gpt-5" -base-gemini = "gemini-2.5-flash" -base-mistral = "mistral-medium" -``` - -The system first looks for direct model names, then checks aliases if no direct match is found. The system handles model routing through backends automatically. - -### Using an LLM Handle in a PipeLLM - -Here is an example of using an llm_handle to specify which LLM to use in a PipeLLM: - -```plx -[pipe.hello_world] -type = "PipeLLM" -description = "Write text about Hello World." -output = "Text" -model = { model = "gpt-5", temperature = 0.9 } -prompt = """ -Write a haiku about Hello World. -""" -``` - -As you can see, to use the LLM, you must also indicate the temperature (float between 0 and 1) and max_tokens (either an int or the string "auto"). - -### LLM Presets - -Presets are meant to record the choice of an llm with its hyper parameters (temperature and max_tokens) if it's good for a particular task. LLM Presets are skill-oriented. - -Examples: -```toml -llm_to_engineer = { model = "base-claude", temperature = 1 } -llm_to_extract_invoice = { model = "claude-4.5-sonnet", temperature = 0.1, max_tokens = "auto" } -``` - -The interest is that these presets can be used to set the LLM choice in a PipeLLM, like this: - -```plx -[pipe.extract_invoice] -type = "PipeLLM" -description = "Extract invoice information from an invoice text transcript" -inputs = { invoice_text = "InvoiceText" } -output = "Invoice" -model = "llm_to_extract_invoice" -prompt = """ -Extract invoice information from this invoice: - -The category of this invoice is: $invoice_details.category. - -@invoice_text -""" -``` - -The setting here `model = "llm_to_extract_invoice"` works because "llm_to_extract_invoice" has been declared as an llm_preset in the deck. -You must not use an LLM preset in a PipeLLM that does not exist in the deck. If needed, you can add llm presets. - - -You can override the predefined llm presets by setting them in `.pipelex/inference/deck/overrides.toml`. diff --git a/AGENTS.md b/AGENTS.md index 6125caa..af4572e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -23,10 +23,10 @@ A pipeline file has three main sections: #### Domain Statement ```plx -domain = "domain_name" +domain = "domain_code" description = "Description of the domain" # Optional ``` -Note: The domain name usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. +Note: The domain code usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. #### Concept Definitions @@ -62,7 +62,7 @@ For details on how to structure concepts with fields, see the "Structuring Model ### Pipe Base Definition ```plx -[pipe.your_pipe_name] +[pipe.your_pipe_code] type = "PipeLLM" description = "A description of what your pipe does" inputs = { input_1 = "ConceptName1", input_2 = "ConceptName2" } @@ -471,7 +471,7 @@ The PipeExtract operator is used to extract text and images from an image or a P [pipe.extract_info] type = "PipeExtract" description = "extract the information" -inputs = { document = "PDF" } # or { image = "Image" } if it's an image. This is the only input. +inputs = { document = "Document" } # or { image = "Image" } if it's an image. This is the only input. output = "Page" ``` @@ -480,7 +480,7 @@ Using Extract Model Settings: [pipe.extract_with_model] type = "PipeExtract" description = "Extract with specific model" -inputs = { document = "PDF" } +inputs = { document = "Document" } output = "Page" model = "base_extract_mistral" # Use predefined extract preset or model alias ``` @@ -588,15 +588,16 @@ $sales_rep.phone | $sales_rep.email """ ``` -#### Key Parameters +#### Key Parameters (Template Mode) -- `template`: Inline template string (mutually exclusive with template_name) +- `template`: Inline template string (mutually exclusive with template_name and construct) - `template_name`: Name of a predefined template (mutually exclusive with template) - `template_category`: Template type ("llm_prompt", "html", "markdown", "mermaid", etc.) - `templating_style`: Styling options for template rendering - `extra_context`: Additional context variables for template For more control, you can use a nested `template` section instead of the `template` field: + - `template.template`: The template string - `template.category`: Template type - `template.templating_style`: Styling options @@ -604,9 +605,143 @@ For more control, you can use a nested `template` section instead of the `templa #### Template Variables Use the same variable insertion rules as PipeLLM: + - `@variable` for block insertion (multi-line content) - `$variable` for inline insertion (short text) +#### Construct Mode (for StructuredContent Output) + +PipeCompose can also generate `StructuredContent` objects using the `construct` section. This mode composes field values from fixed values, variable references, templates, or nested structures. + +**When to use construct mode:** + +- You need to output a structured object (not just Text) +- You want to deterministically compose fields from existing data +- No LLM is needed - just data composition and templating + +##### Basic Construct Usage + +```plx +[concept.SalesSummary] +description = "A structured sales summary" + +[concept.SalesSummary.structure] +report_title = { type = "text", description = "Title of the report" } +customer_name = { type = "text", description = "Customer name" } +deal_value = { type = "number", description = "Deal value" } +summary_text = { type = "text", description = "Generated summary text" } + +[pipe.compose_summary] +type = "PipeCompose" +description = "Compose a sales summary from deal data" +inputs = { deal = "Deal" } +output = "SalesSummary" + +[pipe.compose_summary.construct] +report_title = "Monthly Sales Report" +customer_name = { from = "deal.customer_name" } +deal_value = { from = "deal.amount" } +summary_text = { template = "Deal worth $deal.amount with $deal.customer_name" } +``` + +##### Field Composition Methods + +There are four ways to define field values in a construct: + +**1. Fixed Value (literal)** + +Use a literal value directly: + +```plx +[pipe.compose_report.construct] +report_title = "Annual Report" +report_year = 2024 +is_draft = false +``` + +**2. Variable Reference (`from`)** + +Get a value from working memory using a dotted path: + +```plx +[pipe.compose_report.construct] +customer_name = { from = "deal.customer_name" } +total_amount = { from = "order.total" } +street_address = { from = "customer.address.street" } +``` + +**3. Template (`template`)** + +Render a Jinja2 template with variable substitution: + +```plx +[pipe.compose_report.construct] +invoice_number = { template = "INV-$order.id" } +summary = { template = "Deal worth $deal.amount with $deal.customer_name on {{ current_date }}" } +``` + +**4. Nested Construct** + +For nested structures, use a TOML subsection: + +```plx +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +##### Complete Construct Example + +```plx +domain = "invoicing" + +[concept.Address] +description = "A postal address" + +[concept.Address.structure] +street = { type = "text", description = "Street address" } +city = { type = "text", description = "City name" } +country = { type = "text", description = "Country name" } + +[concept.Invoice] +description = "An invoice document" + +[concept.Invoice.structure] +invoice_number = { type = "text", description = "Invoice number" } +total = { type = "number", description = "Total amount" } + +[pipe.compose_invoice] +type = "PipeCompose" +description = "Compose an invoice from order and customer data" +inputs = { order = "Order", customer = "Customer" } +output = "Invoice" + +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +##### Key Parameters (Construct Mode) + +- `construct`: Dictionary mapping field names to their composition rules +- Each field can be: + - A literal value (string, number, boolean) + - A dict with `from` key for variable reference + - A dict with `template` key for template rendering + - A nested dict for nested structures + +**Note:** You must use either `template` or `construct`, not both. They are mutually exclusive. + ### PipeImgGen operator The PipeImgGen operator is used to generate images using AI image generation models. @@ -952,13 +1087,13 @@ So here are a few concrete examples of calls to execute_pipeline with various wa }, ) -## Here we have a single input and it's a PDF. -## Because PDFContent is a native concept, we can use it directly as a value, +## Here we have a single input and it's a document. +## Because DocumentContent is a native concept, we can use it directly as a value, ## the system knows what content it corresponds to: pipe_output = await execute_pipeline( pipe_code="power_extractor_dpe", inputs={ - "document": PDFContent(url=pdf_url), + "document": DocumentContent(url=pdf_url), }, ) @@ -1081,82 +1216,4 @@ result_list = pipe_output.main_stuff_as_items(item_type=GanttChart) ``` --- - -## Rules to choose LLM models used in PipeLLMs. - -### LLM Configuration System - -In order to use it in a pipe, an LLM is referenced by its llm_handle (alias) and possibly by an llm_preset. -LLM configurations are managed through the new inference backend system with files located in `.pipelex/inference/`: - -- **Model Deck**: `.pipelex/inference/deck/base_deck.toml` and `.pipelex/inference/deck/overrides.toml` -- **Backends**: `.pipelex/inference/backends.toml` and `.pipelex/inference/backends/*.toml` -- **Routing**: `.pipelex/inference/routing_profiles.toml` - -### LLM Handles - -An llm_handle can be either: -1. **A direct model name** (like "gpt-4o-mini", "claude-3-sonnet") - automatically available for all models loaded by the inference backend system -2. **An alias** - user-defined shortcuts that map to model names, defined in the `[aliases]` section: - -```toml -[aliases] -base-claude = "claude-4.5-sonnet" -base-gpt = "gpt-5" -base-gemini = "gemini-2.5-flash" -base-mistral = "mistral-medium" -``` - -The system first looks for direct model names, then checks aliases if no direct match is found. The system handles model routing through backends automatically. - -### Using an LLM Handle in a PipeLLM - -Here is an example of using an llm_handle to specify which LLM to use in a PipeLLM: - -```plx -[pipe.hello_world] -type = "PipeLLM" -description = "Write text about Hello World." -output = "Text" -model = { model = "gpt-5", temperature = 0.9 } -prompt = """ -Write a haiku about Hello World. -""" -``` - -As you can see, to use the LLM, you must also indicate the temperature (float between 0 and 1) and max_tokens (either an int or the string "auto"). - -### LLM Presets - -Presets are meant to record the choice of an llm with its hyper parameters (temperature and max_tokens) if it's good for a particular task. LLM Presets are skill-oriented. - -Examples: -```toml -llm_to_engineer = { model = "base-claude", temperature = 1 } -llm_to_extract_invoice = { model = "claude-4.5-sonnet", temperature = 0.1, max_tokens = "auto" } -``` - -The interest is that these presets can be used to set the LLM choice in a PipeLLM, like this: - -```plx -[pipe.extract_invoice] -type = "PipeLLM" -description = "Extract invoice information from an invoice text transcript" -inputs = { invoice_text = "InvoiceText" } -output = "Invoice" -model = "llm_to_extract_invoice" -prompt = """ -Extract invoice information from this invoice: - -The category of this invoice is: $invoice_details.category. - -@invoice_text -""" -``` - -The setting here `model = "llm_to_extract_invoice"` works because "llm_to_extract_invoice" has been declared as an llm_preset in the deck. -You must not use an LLM preset in a PipeLLM that does not exist in the deck. If needed, you can add llm presets. - - -You can override the predefined llm presets by setting them in `.pipelex/inference/deck/overrides.toml`. diff --git a/CLAUDE.md b/CLAUDE.md index 6125caa..af4572e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -23,10 +23,10 @@ A pipeline file has three main sections: #### Domain Statement ```plx -domain = "domain_name" +domain = "domain_code" description = "Description of the domain" # Optional ``` -Note: The domain name usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. +Note: The domain code usually matches the plx filename for single-file domains. For multi-file domains, use the subdirectory name. #### Concept Definitions @@ -62,7 +62,7 @@ For details on how to structure concepts with fields, see the "Structuring Model ### Pipe Base Definition ```plx -[pipe.your_pipe_name] +[pipe.your_pipe_code] type = "PipeLLM" description = "A description of what your pipe does" inputs = { input_1 = "ConceptName1", input_2 = "ConceptName2" } @@ -471,7 +471,7 @@ The PipeExtract operator is used to extract text and images from an image or a P [pipe.extract_info] type = "PipeExtract" description = "extract the information" -inputs = { document = "PDF" } # or { image = "Image" } if it's an image. This is the only input. +inputs = { document = "Document" } # or { image = "Image" } if it's an image. This is the only input. output = "Page" ``` @@ -480,7 +480,7 @@ Using Extract Model Settings: [pipe.extract_with_model] type = "PipeExtract" description = "Extract with specific model" -inputs = { document = "PDF" } +inputs = { document = "Document" } output = "Page" model = "base_extract_mistral" # Use predefined extract preset or model alias ``` @@ -588,15 +588,16 @@ $sales_rep.phone | $sales_rep.email """ ``` -#### Key Parameters +#### Key Parameters (Template Mode) -- `template`: Inline template string (mutually exclusive with template_name) +- `template`: Inline template string (mutually exclusive with template_name and construct) - `template_name`: Name of a predefined template (mutually exclusive with template) - `template_category`: Template type ("llm_prompt", "html", "markdown", "mermaid", etc.) - `templating_style`: Styling options for template rendering - `extra_context`: Additional context variables for template For more control, you can use a nested `template` section instead of the `template` field: + - `template.template`: The template string - `template.category`: Template type - `template.templating_style`: Styling options @@ -604,9 +605,143 @@ For more control, you can use a nested `template` section instead of the `templa #### Template Variables Use the same variable insertion rules as PipeLLM: + - `@variable` for block insertion (multi-line content) - `$variable` for inline insertion (short text) +#### Construct Mode (for StructuredContent Output) + +PipeCompose can also generate `StructuredContent` objects using the `construct` section. This mode composes field values from fixed values, variable references, templates, or nested structures. + +**When to use construct mode:** + +- You need to output a structured object (not just Text) +- You want to deterministically compose fields from existing data +- No LLM is needed - just data composition and templating + +##### Basic Construct Usage + +```plx +[concept.SalesSummary] +description = "A structured sales summary" + +[concept.SalesSummary.structure] +report_title = { type = "text", description = "Title of the report" } +customer_name = { type = "text", description = "Customer name" } +deal_value = { type = "number", description = "Deal value" } +summary_text = { type = "text", description = "Generated summary text" } + +[pipe.compose_summary] +type = "PipeCompose" +description = "Compose a sales summary from deal data" +inputs = { deal = "Deal" } +output = "SalesSummary" + +[pipe.compose_summary.construct] +report_title = "Monthly Sales Report" +customer_name = { from = "deal.customer_name" } +deal_value = { from = "deal.amount" } +summary_text = { template = "Deal worth $deal.amount with $deal.customer_name" } +``` + +##### Field Composition Methods + +There are four ways to define field values in a construct: + +**1. Fixed Value (literal)** + +Use a literal value directly: + +```plx +[pipe.compose_report.construct] +report_title = "Annual Report" +report_year = 2024 +is_draft = false +``` + +**2. Variable Reference (`from`)** + +Get a value from working memory using a dotted path: + +```plx +[pipe.compose_report.construct] +customer_name = { from = "deal.customer_name" } +total_amount = { from = "order.total" } +street_address = { from = "customer.address.street" } +``` + +**3. Template (`template`)** + +Render a Jinja2 template with variable substitution: + +```plx +[pipe.compose_report.construct] +invoice_number = { template = "INV-$order.id" } +summary = { template = "Deal worth $deal.amount with $deal.customer_name on {{ current_date }}" } +``` + +**4. Nested Construct** + +For nested structures, use a TOML subsection: + +```plx +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +##### Complete Construct Example + +```plx +domain = "invoicing" + +[concept.Address] +description = "A postal address" + +[concept.Address.structure] +street = { type = "text", description = "Street address" } +city = { type = "text", description = "City name" } +country = { type = "text", description = "Country name" } + +[concept.Invoice] +description = "An invoice document" + +[concept.Invoice.structure] +invoice_number = { type = "text", description = "Invoice number" } +total = { type = "number", description = "Total amount" } + +[pipe.compose_invoice] +type = "PipeCompose" +description = "Compose an invoice from order and customer data" +inputs = { order = "Order", customer = "Customer" } +output = "Invoice" + +[pipe.compose_invoice.construct] +invoice_number = { template = "INV-$order.id" } +total = { from = "order.total_amount" } + +[pipe.compose_invoice.construct.billing_address] +street = { from = "customer.address.street" } +city = { from = "customer.address.city" } +country = "France" +``` + +##### Key Parameters (Construct Mode) + +- `construct`: Dictionary mapping field names to their composition rules +- Each field can be: + - A literal value (string, number, boolean) + - A dict with `from` key for variable reference + - A dict with `template` key for template rendering + - A nested dict for nested structures + +**Note:** You must use either `template` or `construct`, not both. They are mutually exclusive. + ### PipeImgGen operator The PipeImgGen operator is used to generate images using AI image generation models. @@ -952,13 +1087,13 @@ So here are a few concrete examples of calls to execute_pipeline with various wa }, ) -## Here we have a single input and it's a PDF. -## Because PDFContent is a native concept, we can use it directly as a value, +## Here we have a single input and it's a document. +## Because DocumentContent is a native concept, we can use it directly as a value, ## the system knows what content it corresponds to: pipe_output = await execute_pipeline( pipe_code="power_extractor_dpe", inputs={ - "document": PDFContent(url=pdf_url), + "document": DocumentContent(url=pdf_url), }, ) @@ -1081,82 +1216,4 @@ result_list = pipe_output.main_stuff_as_items(item_type=GanttChart) ``` --- - -## Rules to choose LLM models used in PipeLLMs. - -### LLM Configuration System - -In order to use it in a pipe, an LLM is referenced by its llm_handle (alias) and possibly by an llm_preset. -LLM configurations are managed through the new inference backend system with files located in `.pipelex/inference/`: - -- **Model Deck**: `.pipelex/inference/deck/base_deck.toml` and `.pipelex/inference/deck/overrides.toml` -- **Backends**: `.pipelex/inference/backends.toml` and `.pipelex/inference/backends/*.toml` -- **Routing**: `.pipelex/inference/routing_profiles.toml` - -### LLM Handles - -An llm_handle can be either: -1. **A direct model name** (like "gpt-4o-mini", "claude-3-sonnet") - automatically available for all models loaded by the inference backend system -2. **An alias** - user-defined shortcuts that map to model names, defined in the `[aliases]` section: - -```toml -[aliases] -base-claude = "claude-4.5-sonnet" -base-gpt = "gpt-5" -base-gemini = "gemini-2.5-flash" -base-mistral = "mistral-medium" -``` - -The system first looks for direct model names, then checks aliases if no direct match is found. The system handles model routing through backends automatically. - -### Using an LLM Handle in a PipeLLM - -Here is an example of using an llm_handle to specify which LLM to use in a PipeLLM: - -```plx -[pipe.hello_world] -type = "PipeLLM" -description = "Write text about Hello World." -output = "Text" -model = { model = "gpt-5", temperature = 0.9 } -prompt = """ -Write a haiku about Hello World. -""" -``` - -As you can see, to use the LLM, you must also indicate the temperature (float between 0 and 1) and max_tokens (either an int or the string "auto"). - -### LLM Presets - -Presets are meant to record the choice of an llm with its hyper parameters (temperature and max_tokens) if it's good for a particular task. LLM Presets are skill-oriented. - -Examples: -```toml -llm_to_engineer = { model = "base-claude", temperature = 1 } -llm_to_extract_invoice = { model = "claude-4.5-sonnet", temperature = 0.1, max_tokens = "auto" } -``` - -The interest is that these presets can be used to set the LLM choice in a PipeLLM, like this: - -```plx -[pipe.extract_invoice] -type = "PipeLLM" -description = "Extract invoice information from an invoice text transcript" -inputs = { invoice_text = "InvoiceText" } -output = "Invoice" -model = "llm_to_extract_invoice" -prompt = """ -Extract invoice information from this invoice: - -The category of this invoice is: $invoice_details.category. - -@invoice_text -""" -``` - -The setting here `model = "llm_to_extract_invoice"` works because "llm_to_extract_invoice" has been declared as an llm_preset in the deck. -You must not use an LLM preset in a PipeLLM that does not exist in the deck. If needed, you can add llm presets. - - -You can override the predefined llm presets by setting them in `.pipelex/inference/deck/overrides.toml`. diff --git a/Makefile b/Makefile index 803118d..bb1c61f 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ VIRTUAL_ENV := $(CURDIR)/.venv PROJECT_NAME := $(shell grep '^name = ' pyproject.toml | sed -E 's/name = "(.*)"/\1/') # The "?" is used to make the variable optional, so that it can be overridden by the user. -PYTHON_VERSION ?= 3.11 +PYTHON_VERSION ?= 3.13 VENV_PYTHON := $(VIRTUAL_ENV)/bin/python VENV_PYTEST := $(VIRTUAL_ENV)/bin/pytest VENV_RUFF := $(VIRTUAL_ENV)/bin/ruff @@ -16,7 +16,7 @@ VENV_PIPELEX := $(VIRTUAL_ENV)/bin/pipelex UV_MIN_VERSION = $(shell grep -m1 'required-version' pyproject.toml | sed -E 's/.*= *"([^<>=, ]+).*/\1/') -USUAL_PYTEST_MARKERS := "(dry_runnable or not (inference or llm or imgg or ocr)) and not (needs_output or pipelex_api)" +USUAL_PYTEST_MARKERS := "(dry_runnable or not inference) and not (needs_output or pipelex_api)" define PRINT_TITLE $(eval PROJECT_PART := [$(PROJECT_NAME)]) @@ -117,7 +117,7 @@ env: check-uv $(call PRINT_TITLE,"Creating virtual environment") @if [ ! -d $(VIRTUAL_ENV) ]; then \ echo "Creating Python virtual env in \`${VIRTUAL_ENV}\`"; \ - uv venv $(VIRTUAL_ENV) --python 3.11; \ + uv venv $(VIRTUAL_ENV) --python $(PYTHON_VERSION); \ else \ echo "Python virtual env already exists in \`${VIRTUAL_ENV}\`"; \ fi @@ -209,12 +209,12 @@ cleanall: cleanderived cleanenv cleanconfig codex-tests: env $(call PRINT_TITLE,"Unit testing for Codex") @echo "• Running unit tests for Codex (excluding inference and codex_disabled)" - $(VENV_PYTEST) --exitfirst --quiet -m "not inference and not codex_disabled" || [ $$? = 5 ] + $(VENV_PYTEST) --disable-inference --exitfirst --quiet -m "not inference and not codex_disabled" || [ $$? = 5 ] gha-tests: env $(call PRINT_TITLE,"Unit testing for github actions") @echo "• Running unit tests for github actions (excluding inference and gha_disabled)" - $(VENV_PYTEST) --exitfirst --quiet -m "not inference and not gha_disabled" || [ $$? = 5 ] + $(VENV_PYTEST) --disable-inference --exitfirst --quiet -m "not inference and not gha_disabled" || [ $$? = 5 ] run-all-tests: env $(call PRINT_TITLE,"Running all unit tests") diff --git a/data/CVs/CV-01.pdf b/data/CVs/CV-01.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-01.pdf differ diff --git a/data/CVs/CV-02.pdf b/data/CVs/CV-02.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-02.pdf differ diff --git a/data/CVs/CV-03.pdf b/data/CVs/CV-03.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-03.pdf differ diff --git a/data/CVs/CV-04.pdf b/data/CVs/CV-04.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-04.pdf differ diff --git a/data/CVs/CV-05.pdf b/data/CVs/CV-05.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-05.pdf differ diff --git a/data/CVs/CV-06.pdf b/data/CVs/CV-06.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-06.pdf differ diff --git a/data/CVs/CV-07.pdf b/data/CVs/CV-07.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-07.pdf differ diff --git a/data/CVs/CV-08.pdf b/data/CVs/CV-08.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-08.pdf differ diff --git a/data/CVs/CV-09.pdf b/data/CVs/CV-09.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-09.pdf differ diff --git a/data/CVs/CV-10.pdf b/data/CVs/CV-10.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-10.pdf differ diff --git a/data/CVs/CV-11.pdf b/data/CVs/CV-11.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-11.pdf differ diff --git a/data/CVs/CV-12.pdf b/data/CVs/CV-12.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-12.pdf differ diff --git a/data/CVs/CV-13.pdf b/data/CVs/CV-13.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-13.pdf differ diff --git a/data/CVs/CV-14.pdf b/data/CVs/CV-14.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-14.pdf differ diff --git a/data/CVs/CV-15.pdf b/data/CVs/CV-15.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-15.pdf differ diff --git a/data/CVs/CV-16.pdf b/data/CVs/CV-16.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-16.pdf differ diff --git a/data/CVs/CV-17.pdf b/data/CVs/CV-17.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-17.pdf differ diff --git a/data/CVs/CV-18.pdf b/data/CVs/CV-18.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-18.pdf differ diff --git a/data/CVs/CV-19.pdf b/data/CVs/CV-19.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-19.pdf differ diff --git a/data/CVs/CV-20.pdf b/data/CVs/CV-20.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVs/CV-20.pdf differ diff --git a/data/CVx2/CV-01.pdf b/data/CVx2/CV-01.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVx2/CV-01.pdf differ diff --git a/data/CVx2/CV-02.pdf b/data/CVx2/CV-02.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVx2/CV-02.pdf differ diff --git a/data/CVx5/CV-01.pdf b/data/CVx5/CV-01.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVx5/CV-01.pdf differ diff --git a/data/CVx5/CV-02.pdf b/data/CVx5/CV-02.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVx5/CV-02.pdf differ diff --git a/data/CVx5/CV-03.pdf b/data/CVx5/CV-03.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVx5/CV-03.pdf differ diff --git a/data/CVx5/CV-04.pdf b/data/CVx5/CV-04.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVx5/CV-04.pdf differ diff --git a/data/CVx5/CV-05.pdf b/data/CVx5/CV-05.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/CVx5/CV-05.pdf differ diff --git a/data/Job-Offer.pdf b/data/Job-Offer.pdf new file mode 100644 index 0000000..061d713 Binary files /dev/null and b/data/Job-Offer.pdf differ diff --git a/data/John-Doe-CV.pdf b/data/John-Doe-CV.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/John-Doe-CV.pdf differ diff --git a/data/OneCV/CV-01.pdf b/data/OneCV/CV-01.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/OneCV/CV-01.pdf differ diff --git a/data/documents/CV-ELIAS-THORNE.docx b/data/documents/CV-ELIAS-THORNE.docx new file mode 100644 index 0000000..e230db1 Binary files /dev/null and b/data/documents/CV-ELIAS-THORNE.docx differ diff --git a/data/documents/Job-Offer-Scan.pdf b/data/documents/Job-Offer-Scan.pdf new file mode 100644 index 0000000..3f2622b Binary files /dev/null and b/data/documents/Job-Offer-Scan.pdf differ diff --git a/data/documents/Job-Offer.pdf b/data/documents/Job-Offer.pdf new file mode 100644 index 0000000..061d713 Binary files /dev/null and b/data/documents/Job-Offer.pdf differ diff --git a/data/documents/John-Doe-CV.pdf b/data/documents/John-Doe-CV.pdf new file mode 100644 index 0000000..3704644 Binary files /dev/null and b/data/documents/John-Doe-CV.pdf differ diff --git a/data/documents/illustrated_train_article.pdf b/data/documents/illustrated_train_article.pdf new file mode 100644 index 0000000..945eb35 Binary files /dev/null and b/data/documents/illustrated_train_article.pdf differ diff --git a/data/documents/solar_system.pdf b/data/documents/solar_system.pdf new file mode 100644 index 0000000..3f6b549 Binary files /dev/null and b/data/documents/solar_system.pdf differ diff --git a/data/images/ai_lympics.jpg b/data/images/ai_lympics.jpg new file mode 100644 index 0000000..c737a05 Binary files /dev/null and b/data/images/ai_lympics.jpg differ diff --git a/data/images/ai_lympics.png b/data/images/ai_lympics.png new file mode 100644 index 0000000..c64a506 Binary files /dev/null and b/data/images/ai_lympics.png differ diff --git a/data/images/animal_lympics.jpg b/data/images/animal_lympics.jpg new file mode 100644 index 0000000..a36d0f2 Binary files /dev/null and b/data/images/animal_lympics.jpg differ diff --git a/data/images/animal_lympics.png b/data/images/animal_lympics.png new file mode 100644 index 0000000..b77141c Binary files /dev/null and b/data/images/animal_lympics.png differ diff --git a/data/images/diagram.png b/data/images/diagram.png new file mode 100644 index 0000000..360ce0d Binary files /dev/null and b/data/images/diagram.png differ diff --git a/data/images/eiffel_tower.jpg b/data/images/eiffel_tower.jpg new file mode 100644 index 0000000..7b11667 Binary files /dev/null and b/data/images/eiffel_tower.jpg differ diff --git a/data/images/eiffel_tower.png b/data/images/eiffel_tower.png new file mode 100644 index 0000000..7432e13 Binary files /dev/null and b/data/images/eiffel_tower.png differ diff --git a/data/images/logo-tiny.png b/data/images/logo-tiny.png new file mode 100644 index 0000000..3e4bd86 Binary files /dev/null and b/data/images/logo-tiny.png differ diff --git a/data/images/solar_system.jpg b/data/images/solar_system.jpg new file mode 100644 index 0000000..950d73e Binary files /dev/null and b/data/images/solar_system.jpg differ diff --git a/data/images/solar_system.png b/data/images/solar_system.png new file mode 100644 index 0000000..2e07959 Binary files /dev/null and b/data/images/solar_system.png differ diff --git a/examples.sh b/examples.sh new file mode 100644 index 0000000..22a53c0 --- /dev/null +++ b/examples.sh @@ -0,0 +1,39 @@ + +pipelex build pipe "Imagine a cute animal mascot for a startup based on its elevator pitch and some brand guidelines" --graph --graph-full-data --output-dir test_graph + +pipelex build pipe "Imagine a cute animal mascot for a startup based on its elevator pitch \ + and some brand guidelines, propose 2 different ideas, and for each, 3 style variants in the image generation prompt, \ + at the end we want the rendered image" -o mascot + +pipelex build pipe "Given an expense report, apply company rules" + +pipelex build pipe "Given a theme, write a Haiku" + +pipelex build pipe "Imagine a crazy funny image to render, like a green cow on the Eiffel Tower but not that, and then render it"--no-output --graph --graph-full-data + +pipelex run generate_crazy_image + +pipelex run cv_job_match --inputs pipelines/cv_and_offer/inputs.json +pipelex run cv_job_match --inputs pipelines/cv_and_offer/inputs.json --dry-run + +pipelex run batch_cv_job_match --inputs cv_batch/inputs.json + +pipelex graph render graph.json + + + +# pipelex run examples/cv_and_offer/cv_job_match.plx --inputs examples/cv_and_offer/inputs.json --no-output --graph --graph-full-data +pipelex run cv_job_match --inputs cv_and_offer/inputs.json -L cv_and_offer + +pipelex run examples/cv_batch/bundle.plx --inputs examples/cv_batch/inputs.json + + +pipelex build pipe "Take a CV and Job offer, analyze if they match and generate 5 questions for the interview" + +pipelex build pipe "Take a CV PDF and Job offer PDF, analyze if they match and generate 5 questions for the interview" + +pipelex build pipe "Take a series of experimental material and contact angle data measurements and rolling angle data measurements and rank the materials by hydrophobicity" --graph --graph-full-data + +pipelex build pipe "Take a document, extract its content, review the text to determine the extraction quality (confidence percentage between 0 and 100) and if it's below 98, pass it to a Vision model, along with the text, to complete/perfect it, otherwise, if it's above 98, return it as is." + +pipelex build pipe "Take a scanned page, extract its content, review the text to determine the extraction quality (confidence percentage between 0 and 100) and if it's below 98, pass it to a Vision model, along with the text, to complete/perfect it, otherwise, if it's above 98, return it as is" \ No newline at end of file diff --git a/examples/crazy/__init__.py b/examples/crazy/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/examples/crazy/bundle.plx b/examples/crazy/bundle.plx new file mode 100644 index 0000000..6e52f22 --- /dev/null +++ b/examples/crazy/bundle.plx @@ -0,0 +1,42 @@ +domain = "crazy_image_generation" +description = "Imagining and rendering absurd, funny images with unexpected surreal elements" +main_pipe = "generate_crazy_image" + +[concept.ImagePrompt] +description = """ +A detailed textual description of a scene to be used as input for an image generation model, including subjects, setting, style, and visual details. +""" +refines = "Text" + +[pipe.generate_crazy_image] +type = "PipeSequence" +description = """ +Main pipeline that orchestrates the full crazy image generation flow - imagines a wild, absurd scene concept and renders it as an image +""" +output = "Image" +steps = [ + { pipe = "imagine_scene", result = "image_prompt" }, + { pipe = "render_image", result = "crazy_image" }, +] + +[pipe.imagine_scene] +type = "PipeLLM" +description = """ +Generates a creative, absurd, and hilarious image concept combining unexpected elements in surreal ways - think flying spaghetti monsters, penguins in business suits at a disco, or a T-Rex doing yoga on the moon +""" +output = "ImagePrompt" +model = "$img-gen-prompting-cheap" +system_prompt = """ +You are a wildly creative visual concept artist specializing in absurd, surreal, and hilarious imagery. Your task is to generate a structured image prompt that combines unexpected elements in surprising and funny ways. Think outside the box - the more unexpected the combination, the better! +""" +prompt = """ +Generate a creative, absurd, and funny image concept. Combine unexpected elements in a surreal way that would make viewers laugh or do a double-take. Be VERY concise and focus on vivid, specific visual details that work well for image generation. +""" + +[pipe.render_image] +type = "PipeImgGen" +description = "Generates the absurd image based on the creative scene description" +inputs = { image_prompt = "ImagePrompt" } +output = "Image" +prompt = "$image_prompt" +model = "$gen-image-high-quality" diff --git a/examples/crazy/bundle_view.html b/examples/crazy/bundle_view.html new file mode 100644 index 0000000..dfae36e --- /dev/null +++ b/examples/crazy/bundle_view.html @@ -0,0 +1,111 @@ + + + + + + + +
Domain: crazy_image_generation
+
+Description: Imagining and rendering absurd, funny images with unexpected surreal elements
+
+Main Pipe: generate_crazy_image
+
+
+
+                                              Concepts                                              
+┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
+ Concept: ImagePrompt                                                                             
+ Refines: Text                                                                                    
+                                                                                                  
+ Description: A detailed textual description of a scene to be used as input for an image          
+ generation model, including subjects, setting, style, and visual details.                        
+                                                                                                  
+└──────────────────────────────────────────────────────────────────────────────────────────────────┘
+
+
+                                               Pipes                                                
+┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
+ Pipe: generate_crazy_image                                                                       
+                                                                                                  
+ Type: PipeSequence (PipeController)                                                              
+                                                                                                  
+ Description: Main pipeline that orchestrates the full crazy image generation flow - imagines a   
+ wild, absurd scene concept and renders it as an image                                            
+                                                                                                  
+                                                                                                  
+ No inputs                                                                                        
+                                                                                                  
+ Output: Image                                                                                    
+                                                                                                  
+ Sequence Steps:                                                                                  
+ ┏━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓                                                          
+ ┃ Step ┃ Pipe          ┃ Result name  ┃                                                          
+ ┡━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩                                                          
+ │    1 │ imagine_scene  image_prompt                                                           
+ ├──────┼───────────────┼──────────────┤                                                          
+ │    2 │ render_image   crazy_image                                                            
+ └──────┴───────────────┴──────────────┘                                                          
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Pipe: imagine_scene                                                                              
+                                                                                                  
+ Type: PipeLLM (PipeOperator)                                                                     
+                                                                                                  
+ Description: Generates a creative, absurd, and hilarious image concept combining unexpected      
+ elements in surreal ways - think flying spaghetti monsters, penguins in business suits at a      
+ disco, or a T-Rex doing yoga on the moon                                                         
+                                                                                                  
+                                                                                                  
+ No inputs                                                                                        
+                                                                                                  
+ Output: ImagePrompt                                                                              
+                                                                                                  
+ LLM Skill: cheap_llm_for_creativity                                                              
+                                                                                                  
+ ╭─ System Prompt ──────────────────────────────────────────────────────────────────────────────╮ 
+  You are a wildly creative visual concept artist specializing in absurd, surreal, and          
+  hilarious imagery. Your task is to generate a structured image prompt that combines           
+  unexpected elements in surprising and funny ways. Think outside the box - the more            
+  unexpected the combination, the better!                                                       
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ 
+                                                                                                  
+ ╭─ Prompt ─────────────────────────────────────────────────────────────────────────────────────╮ 
+  Generate a creative, absurd, and funny image concept. Combine unexpected elements in a        
+  surreal way that would make viewers laugh or do a double-take. Be VERY concise and focus on   
+  vivid, specific visual details that work well for image generation.                           
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ 
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Pipe: render_image                                                                               
+                                                                                                  
+ Type: PipeImgGen (PipeOperator)                                                                  
+                                                                                                  
+ Description: Generates the absurd image based on the creative scene description                  
+                                                                                                  
+                                                                                                  
+ Input: image_prompt (ImagePrompt)                                                                
+                                                                                                  
+ Output: Image                                                                                    
+                                                                                                  
+ Image Generation Skill: $gen-image-high-quality                                                   
+└──────────────────────────────────────────────────────────────────────────────────────────────────┘
+
+ + diff --git a/examples/crazy/bundle_view.svg b/examples/crazy/bundle_view.svg new file mode 100644 index 0000000..632ad34 --- /dev/null +++ b/examples/crazy/bundle_view.svg @@ -0,0 +1,397 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rich + + + + + + + + + + Domain: crazy_image_generation + +Description: Imagining and rendering absurd, funny images with unexpected surreal elements + +Main Pipe: generate_crazy_image + + + +                                              Concepts                                               +┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ +Concept: ImagePrompt +Refines: Text + +Description: A detailed textual description of a scene to be used as input for an image  +generation model, including subjects, setting, style, and visual details. + +└──────────────────────────────────────────────────────────────────────────────────────────────────┘ + + +                                               Pipes                                                 +┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ +Pipe: generate_crazy_image + +Type: PipeSequence (PipeController)                                                              + +Description: Main pipeline that orchestrates the full crazy image generation flow - imagines a  +wild, absurd scene concept and renders it as an image + + +No inputs                                                                                        + +Output: Image + +Sequence Steps:                         +┏━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓ +StepPipe         Result name  +┡━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩ +   1imagine_sceneimage_prompt +├──────┼───────────────┼──────────────┤ +   2render_image crazy_image  +└──────┴───────────────┴──────────────┘ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Pipe: imagine_scene + +Type: PipeLLM (PipeOperator)                                                                     + +Description: Generates a creative, absurd, and hilarious image concept combining unexpected  +elements in surreal ways - think flying spaghetti monsters, penguins in business suits at a  +disco, or a T-Rex doing yoga on the moon + + +No inputs                                                                                        + +Output: ImagePrompt + +LLM Skill: cheap_llm_for_creativity + +╭─ System Prompt ──────────────────────────────────────────────────────────────────────────────╮ +You are a wildly creative visual concept artist specializing in absurd, surreal, and         +hilarious imagery. Your task is to generate a structured image prompt that combines          +unexpected elements in surprising and funny ways. Think outside the box - the more           +unexpected the combination, the better!                                                      +╰──────────────────────────────────────────────────────────────────────────────────────────────╯ + +╭─ Prompt ─────────────────────────────────────────────────────────────────────────────────────╮ +Generate a creative, absurd, and funny image concept. Combine unexpected elements in a       +surreal way that would make viewers laugh or do a double-take. Be VERY concise and focus on  +vivid, specific visual details that work well for image generation.                          +╰──────────────────────────────────────────────────────────────────────────────────────────────╯ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Pipe: render_image + +Type: PipeImgGen (PipeOperator)                                                                  + +Description: Generates the absurd image based on the creative scene description + + +Input: image_prompt (ImagePrompt)                                                                + +Output: Image + +Image Generation Skill: $gen-image-high-quality +└──────────────────────────────────────────────────────────────────────────────────────────────────┘ + + + + diff --git a/examples/crazy/inputs.json b/examples/crazy/inputs.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/examples/crazy/inputs.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/examples/crazy/run_generate_crazy_image.py b/examples/crazy/run_generate_crazy_image.py new file mode 100644 index 0000000..2d0f24d --- /dev/null +++ b/examples/crazy/run_generate_crazy_image.py @@ -0,0 +1,19 @@ +import asyncio + +from pipelex.core.stuffs.image_content import ImageContent +from pipelex.pipelex import Pipelex +from pipelex.pipeline.execute import execute_pipeline + + +async def run_generate_crazy_image() -> ImageContent: + pipe_output = await execute_pipeline( + pipe_code="generate_crazy_image", + ) + return pipe_output.main_stuff_as(content_type=ImageContent) + + +if __name__ == "__main__": + # Initialize Pipelex + with Pipelex.make(): + # Run the pipeline + result = asyncio.run(run_generate_crazy_image()) diff --git a/examples/crazy/structures/__init__.py b/examples/crazy/structures/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/examples/crazy/structures/crazy_image_generation_ImagePrompt.py b/examples/crazy/structures/crazy_image_generation_ImagePrompt.py new file mode 100644 index 0000000..dd8169d --- /dev/null +++ b/examples/crazy/structures/crazy_image_generation_ImagePrompt.py @@ -0,0 +1,18 @@ +""" +AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + + +from pipelex.core.stuffs.text_content import TextContent + + +class ImagePrompt(TextContent): + """Generated ImagePrompt class""" diff --git a/examples/cv_and_offer/__init__.py b/examples/cv_and_offer/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/examples/cv_and_offer/__init__.py @@ -0,0 +1 @@ + diff --git a/examples/cv_and_offer/cv_job_match.plx b/examples/cv_and_offer/cv_job_match.plx new file mode 100644 index 0000000..47a74c5 --- /dev/null +++ b/examples/cv_and_offer/cv_job_match.plx @@ -0,0 +1,162 @@ +domain = "cv_and_offer" +description = "Analyzing CV and job offer compatibility and generating interview questions" +main_pipe = "cv_job_match" + +[concept] +CVAnalysis = "Structured analysis of a candidate's curriculum vitae highlighting their professional profile." +JobRequirements = "Structured analysis of a job offer detailing what the employer is seeking." +MatchAnalysis = "Evaluation of how well a candidate aligns with job requirements." +InterviewQuestion = "A targeted question designed for a job interview with its underlying purpose." +InterviewSheet = "A comprehensive interview preparation document combining match analysis with targeted interview questions." + +[pipe.cv_job_match] +type = "PipeSequence" +description = """ +Main pipeline that processes CV and job offer PDFs, analyzes their match, and generates targeted interview questions. This is the entry point for the CV-job matching workflow. +""" +inputs = { cv_pdf = "Document", job_offer_pdf = "Document" } +output = "InterviewSheet" +steps = [ + { pipe = "extract_documents", result = "extracted_documents" }, + { pipe = "analyze_documents", result = "analyzed_documents" }, + { pipe = "evaluate_match", result = "match_analysis" }, + { pipe = "generate_interview_questions", result = "interview_questions" }, + { pipe = "compose_interview_sheet", result = "interview_sheet" }, +] + +[pipe.extract_documents] +type = "PipeParallel" +description = "Extracts text content from both the CV and job offer PDFs concurrently" +inputs = { cv_pdf = "Document", job_offer_pdf = "Document" } +output = "Page[]" +parallels = [ + { pipe = "extract_cv", result = "cv_pages" }, + { pipe = "extract_job_offer", result = "job_offer_pages" }, +] +add_each_output = true + +[pipe.extract_cv] +type = "PipeExtract" +description = "Extracts text content from the CV PDF document" +inputs = { cv_pdf = "Document" } +output = "Page[]" +model = "$extract-text-from-pdf" + +[pipe.extract_job_offer] +type = "PipeExtract" +description = "Extracts text content from the job offer PDF document" +inputs = { job_offer_pdf = "Document" } +output = "Page[]" +model = "$extract-text-from-pdf" + +[pipe.analyze_documents] +type = "PipeParallel" +description = "Analyzes both the CV and job offer documents concurrently to extract structured information" +inputs = { cv_pages = "Page", job_offer_pages = "Page" } +output = "Text" +parallels = [ + { pipe = "analyze_cv", result = "cv_analysis" }, + { pipe = "analyze_job_offer", result = "job_requirements" }, +] +add_each_output = true + +[pipe.analyze_cv] +type = "PipeLLM" +description = """ +Analyzes the CV to extract key information including skills, experience, education, previous roles, and notable achievements +""" +inputs = { cv_pages = "Page" } +output = "CVAnalysis" +model = "writing-factual" +system_prompt = """ +You are an expert HR analyst specializing in CV evaluation. Your task is to analyze curriculum vitae documents and extract structured information about candidates' professional profiles. +""" +prompt = """ +Analyze the following CV and extract the candidate's key professional information. + +@cv_pages +""" + +[pipe.analyze_job_offer] +type = "PipeLLM" +description = """ +Analyzes the job offer to extract requirements including required skills, preferred skills, responsibilities, qualifications, and experience level +""" +inputs = { job_offer_pages = "Page" } +output = "JobRequirements" +model = "writing-factual" +system_prompt = """ +You are an expert HR analyst specializing in job offer analysis. Your task is to extract and structure key requirements from job postings into a structured format. +""" +prompt = """ +Analyze the following job offer and extract the key requirements for the position. + +@job_offer_pages +""" + +[pipe.evaluate_match] +type = "PipeLLM" +description = """ +Evaluates how well the candidate matches the job requirements, identifying matching skills, gaps, experience alignment, and areas to explore during interview +""" +inputs = { cv_analysis = "CVAnalysis", job_requirements = "JobRequirements" } +output = "MatchAnalysis" +model = "writing-factual" +system_prompt = """ +You are an expert HR analyst and recruiter. Your task is to evaluate how well a candidate matches a job position by analyzing their CV against the job requirements. Provide a structured assessment that will help hiring managers make informed decisions. +""" +prompt = """ +Evaluate how well the candidate matches the job requirements based on the following information: + +**Candidate CV Analysis:** +@cv_analysis + +**Job Requirements:** +@job_requirements + +Analyze the alignment between the candidate's profile and the job requirements. Identify matching skills, missing skills, assess experience alignment, note any areas of concern, and highlight areas that should be explored further during the interview process. Provide an overall match score as a percentage. +""" + +[pipe.generate_interview_questions] +type = "PipeLLM" +description = """ +Creates 5 targeted interview questions based on the match analysis, focusing on verifying claimed skills, exploring gaps, and assessing cultural fit +""" +inputs = { cv_analysis = "CVAnalysis", job_requirements = "JobRequirements", match_analysis = "MatchAnalysis" } +output = "InterviewQuestion[5]" +model = "writing-factual" +system_prompt = """ +You are an expert HR interviewer and talent acquisition specialist. Your task is to generate structured interview questions that will help assess a candidate's fit for a specific role. Each question should be purposeful and designed to verify skills, explore potential gaps, or assess cultural fit. +""" +prompt = """ +Based on the following candidate analysis, job requirements, and match analysis, generate 5 targeted interview questions. + +@cv_analysis + +@job_requirements + +@match_analysis + +Create questions that: +1. Verify the candidate's claimed skills and experience +2. Explore any identified gaps or areas of concern +3. Assess cultural and role fit +4. Investigate areas that warrant further exploration +""" + +[pipe.compose_interview_sheet] +type = "PipeCompose" +description = """ +Composes the final interview sheet by combining the match analysis results with the generated interview questions into a single structured document. +""" +inputs = { match_analysis = "MatchAnalysis", interview_questions = "InterviewQuestion[]" } +output = "InterviewSheet" + +[pipe.compose_interview_sheet.construct] +overall_match_score = { from = "match_analysis.overall_match_score" } +matching_skills = { from = "match_analysis.matching_skills" } +missing_skills = { from = "match_analysis.missing_skills" } +experience_alignment = { from = "match_analysis.experience_alignment" } +areas_of_concern = { from = "match_analysis.areas_of_concern" } +areas_to_explore = { from = "match_analysis.areas_to_explore" } +questions = { from = "interview_questions" } diff --git a/examples/cv_and_offer/cv_job_matching_analysis.py b/examples/cv_and_offer/cv_job_matching_analysis.py new file mode 100644 index 0000000..7d7d4bc --- /dev/null +++ b/examples/cv_and_offer/cv_job_matching_analysis.py @@ -0,0 +1,23 @@ +"""AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + +from pipelex.core.stuffs.structured_content import StructuredContent +from pydantic import Field + + +class CVAnalysis(StructuredContent): + """Generated CVAnalysis class""" + + skills: str = Field(..., description="List of technical and soft skills possessed by the candidate") + years_of_experience: float = Field(..., description="Total years of professional experience") + education: str = Field(..., description="Educational background including degrees and institutions") + previous_roles: str = Field(..., description="List of previous job titles and companies") + key_achievements: str | None = Field(default=None, description="Notable accomplishments and contributions from past positions") diff --git a/examples/cv_and_offer/cv_job_matching_itvw_question.py b/examples/cv_and_offer/cv_job_matching_itvw_question.py new file mode 100644 index 0000000..bf53d4a --- /dev/null +++ b/examples/cv_and_offer/cv_job_matching_itvw_question.py @@ -0,0 +1,20 @@ +"""AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + +from pipelex.core.stuffs.structured_content import StructuredContent +from pydantic import Field + + +class InterviewQuestion(StructuredContent): + """Generated InterviewQuestion class""" + + question_text: str = Field(..., description="The interview question to ask the candidate") + purpose: str = Field(..., description="The reason for asking this question and what it aims to assess") diff --git a/examples/cv_and_offer/cv_job_matching_itvw_sheet.py b/examples/cv_and_offer/cv_job_matching_itvw_sheet.py new file mode 100644 index 0000000..d9912d9 --- /dev/null +++ b/examples/cv_and_offer/cv_job_matching_itvw_sheet.py @@ -0,0 +1,26 @@ +"""AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + +from pipelex.core.stuffs.structured_content import StructuredContent +from pydantic import Field +from tests.e2e.pipelex.pipes.pipe_operators.pipe_compose.cv_job_matching_itvw_question import InterviewQuestion + + +class InterviewSheet(StructuredContent): + """Generated InterviewSheet class""" + + overall_match_score: float = Field(..., description="Percentage or rating indicating overall fit between candidate and position") + matching_skills: str = Field(..., description="Skills the candidate has that match the job requirements") + missing_skills: str = Field(..., description="Required skills the candidate appears to lack") + experience_alignment: str = Field(..., description="Assessment of how the candidate's experience level matches expectations") + areas_of_concern: str = Field(..., description="Potential red flags or weaknesses identified") + areas_to_explore: str = Field(..., description="Topics that warrant further investigation during interview") + questions: list[InterviewQuestion] = Field(..., description="List of interview questions with their purposes") diff --git a/examples/cv_and_offer/cv_job_matching_job_requirements.py b/examples/cv_and_offer/cv_job_matching_job_requirements.py new file mode 100644 index 0000000..b4bcbf3 --- /dev/null +++ b/examples/cv_and_offer/cv_job_matching_job_requirements.py @@ -0,0 +1,23 @@ +"""AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + +from pipelex.core.stuffs.structured_content import StructuredContent +from pydantic import Field + + +class JobRequirements(StructuredContent): + """Generated JobRequirements class""" + + required_skills: str = Field(..., description="Skills that are mandatory for the position") + preferred_skills: str | None = Field(default=None, description="Skills that are desirable but not mandatory") + responsibilities: str = Field(..., description="Main duties and tasks of the role") + qualifications: str | None = Field(default=None, description="Required educational or professional qualifications") + experience_level: str = Field(..., description="Expected level of experience for the role") diff --git a/examples/cv_and_offer/cv_job_matching_match_analysis.py b/examples/cv_and_offer/cv_job_matching_match_analysis.py new file mode 100644 index 0000000..2870d5b --- /dev/null +++ b/examples/cv_and_offer/cv_job_matching_match_analysis.py @@ -0,0 +1,24 @@ +"""AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + +from pipelex.core.stuffs.structured_content import StructuredContent +from pydantic import Field + + +class MatchAnalysis(StructuredContent): + """Generated MatchAnalysis class""" + + overall_match_score: float = Field(..., description="Percentage or rating indicating overall fit between candidate and position") + matching_skills: str = Field(..., description="Skills the candidate has that match the job requirements") + missing_skills: str | None = Field(default=None, description="Required skills the candidate appears to lack") + experience_alignment: str = Field(..., description="Assessment of how the candidate's experience level matches expectations") + areas_of_concern: str | None = Field(default=None, description="Potential red flags or weaknesses identified") + areas_to_explore: str = Field(..., description="Topics that warrant further investigation during interview") diff --git a/examples/cv_and_offer/graphspec.json b/examples/cv_and_offer/graphspec.json new file mode 100644 index 0000000..0290bd2 --- /dev/null +++ b/examples/cv_and_offer/graphspec.json @@ -0,0 +1,954 @@ +{ + "graph_id": "8c69028d-d006-4766-a68e-e58324a16d41", + "created_at": "2026-01-09T15:22:29.379107Z", + "pipeline_ref": { + "domain": "cv_and_offer", + "main_pipe": "cv_job_match", + "entrypoint": null + }, + "nodes": [ + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "kind": "controller", + "pipe_code": "cv_job_match", + "pipe_type": "PipeSequence", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:29.385329Z", + "ended_at": "2026-01-09T15:22:54.753515Z", + "duration_ms": 25368 + }, + "io": { + "inputs": [ + { + "name": "cv_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "ddozj", + "data": { + "url": "data/CVx5/CV-01.pdf" + }, + "data_text": "{\n \"url\": \"data/CVx5/CV-01.pdf\"\n}\n", + "data_html": "data/CVx5/CV-01.pdf", + "extra": {} + }, + { + "name": "job_offer_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "QzpHH", + "data": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + }, + "data_text": "{\n \"url\": \"https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf\"\n}\n", + "data_html": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf", + "extra": {} + } + ], + "outputs": [ + { + "name": "interview_sheet", + "concept": "InterviewSheet", + "content_type": null, + "preview": null, + "size": null, + "digest": "nbqHw", + "data": { + "overall_match_score": 10.0, + "matching_skills": "Customer Service, Organizational Skills, Leadership, Sales", + "missing_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA", + "experience_alignment": "The candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.", + "areas_of_concern": "The candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.", + "areas_to_explore": "Discuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.", + "questions": [ + { + "question_text": "Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?", + "purpose": "To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role." + }, + { + "question_text": "What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?", + "purpose": "To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position." + }, + { + "question_text": "Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?", + "purpose": "To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role." + }, + { + "question_text": "Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?", + "purpose": "To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor." + }, + { + "question_text": "What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?", + "purpose": "To investigate the candidate's passion for talent development and their history of fostering leadership within their teams." + } + ] + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n overall_match_score │ 10.0 \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n matching_skills │ Customer Service, Organizational Skills, Leadership, Sales \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n missing_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executi\n │ to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterp\n │ Track record of building sales teams from early stage through scale, Experti\n │ selling and strategic account management, Strong analytical skills with prof\n │ analytics tools, History of developing talent - multiple direct reports prom\n │ roles, Experience with channel/partner sales models, Passion for coaching an\n │ high-performing teams, 12+ years of experience, MBA \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n experience_alignment │ The candidate has 8.2 years of experience, which is below the required 12+ y\n │ executive-level position. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_of_concern │ The candidate lacks the necessary experience in SaaS sales and executive-lev\n │ which are critical for this role. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_to_explore │ Discuss the candidate's leadership experience and ability to develop teams, \n │ understanding of enterprise sales strategies. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n questions │ 1 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Can you describe your experience in leading and dev\n │ │ │ strategies have you implemented to ensure their suc\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To assess the candidate's leadership experience and\n │ │ │ high-performing teams, which is crucial for the rol\n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 2 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ What approaches have you used to engage C-suite exe\n │ │ │ Can you provide an example of a successful engageme\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To evaluate the candidate's executive presence and \n │ │ │ with high-level stakeholders, which is essential fo\n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 3 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Given your background in retail sales, how do you p\n │ │ │ to selling SaaS solutions to enterprise clients? \n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To explore the candidate's understanding of SaaS sa\n │ │ │ their skills to meet the requirements of the role. \n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 4 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Can you discuss a time when you had to analyze sale\n │ │ │ decisions? What tools did you use, and what was the\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To assess the candidate's analytical skills and fam\n │ │ │ tools, which are important for driving operational \n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 5 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ What is your philosophy on coaching and developing \n │ │ │ you share a specific instance where you successfull\n │ │ │ leadership role? \n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To investigate the candidate's passion for talent d\n │ │ │ fostering leadership within their teams. \n", + "data_html": "
overall_match_score10.0
matching_skillsCustomer Service, Organizational Skills, Leadership, Sales
missing_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA
experience_alignmentThe candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.
areas_of_concernThe candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.
areas_to_exploreDiscuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.
questions
question_textpurpose
Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role.
What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position.
Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role.
Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor.
What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?To investigate the candidate's passion for talent development and their history of fostering leadership within their teams.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_1", + "kind": "controller", + "pipe_code": "extract_documents", + "pipe_type": "PipeParallel", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:29.390687Z", + "ended_at": "2026-01-09T15:22:38.539923Z", + "duration_ms": 9149 + }, + "io": { + "inputs": [ + { + "name": "cv_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "ddozj", + "data": { + "url": "data/CVx5/CV-01.pdf" + }, + "data_text": "{\n \"url\": \"data/CVx5/CV-01.pdf\"\n}\n", + "data_html": "data/CVx5/CV-01.pdf", + "extra": {} + }, + { + "name": "job_offer_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "QzpHH", + "data": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + }, + "data_text": "{\n \"url\": \"https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf\"\n}\n", + "data_html": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf", + "extra": {} + } + ], + "outputs": [] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_2", + "kind": "operator", + "pipe_code": "extract_cv", + "pipe_type": "PipeExtract", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:29.395097Z", + "ended_at": "2026-01-09T15:22:36.078102Z", + "duration_ms": 6683 + }, + "io": { + "inputs": [ + { + "name": "cv_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "ddozj", + "data": { + "url": "data/CVx5/CV-01.pdf" + }, + "data_text": "{\n \"url\": \"data/CVx5/CV-01.pdf\"\n}\n", + "data_html": "data/CVx5/CV-01.pdf", + "extra": {} + } + ], + "outputs": [ + { + "name": "cv_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "SWQZK", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n\" Bachelor of Science in Graphic Design\n\n\" Cumulative GPA 3.93, Dean's List\n\n\" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n\" Use my trend awareness to assist customers in their shopping experience\n\n\" Thoroughly scan every piece of merchandise for inventory control\n\n\" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n\" Sell retail and memberships to meet company sales goals\n\n\" Build organizational skills by single handedly running all operating procedures\n\n\" Communicate with clients to fulfill their wants and needs\n\n\" Attend promotional events to market our services\n\n\" Handle cash and deposits during opening and closing\n\n\" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n\" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n\" Applied my leadership skills by assisting in the training of coworkers\n\n\" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n\" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n\" Represented Periscope Marketing and Target Inc. at a college event\n\n\" Engaged University of Minnesota freshman in the Target brand experience\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ JOHN DOE \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ \n │ Full Address . City, State, ZIP . Phone Number . E-mail \n │ \n │ OBJECTIVE: Design apparel print for an innovative retail company \n │ \n │ EDUCATION: \n │ \n │ UNIVERSITY OF MINNESOTA College of Design \" Bachelor of Science in Graphic Design \n │ \n │ \" Cumulative GPA 3.93, Dean's List \n │ \n │ \" Twin cities Iron Range Scholarship \n │ \n │ City, State May 2011 \n │ \n │ WORK EXPERIENCE: \n │ \n │ AMERICAN EAGLE Sales Associate \n │ \n │ City, State July 2009 - present \n │ \n │ · Collaborated with the store merchandiser creating displays to attract clientele \n │ \n │ \" Use my trend awareness to assist customers in their shopping experience \n │ \n │ \" Thoroughly scan every piece of merchandise for inventory control \n │ \n │ \" Process shipment to increase my product knowledge \n │ \n │ PLANET BEACH Spa Consultant City, State Aug. 2008 - present \n │ \n │ \" Sell retail and memberships to meet company sales goals \n │ \n │ \" Build organizational skills by single handedly running all operating procedures \n │ \n │ \" Communicate with clients to fulfill their wants and needs \n │ \n │ \" Attend promotional events to market our services \n │ \n │ \" Handle cash and deposits during opening and closing \n │ \n │ \" Received employee of the month award twice \n │ \n │ HEARTBREAKER Sales Associate City, State May 2008 - Aug. 2008 \n │ \n │ · Stocked sales floor with fast fashion inventory \n │ \n │ · Marked down items allowing me to see unsuccessful merchandise in a retail market \n │ \n │ \" Offered advice and assistance to each guest \n │ \n │ VICTORIA'S SECRET Fashion Representative City, State Jan. 2006 - Feb. 2009 \n │ \n │ \" Applied my leadership skills by assisting in the training of coworkers \n │ \n │ \" Set up mannequins and displays in order to entice future customers \n │ \n │ · Provided superior customer service by helping with consumer decisions \n │ \n │ \" Took seasonal inventory \n │ \n │ VOLUNTEER EXPERIENCE: \n │ \n │ TARGET CORPORATION Brand Ambassador \n │ \n │ City, State August 2009 \n │ \n │ \" Represented Periscope Marketing and Target Inc. at a college event \n │ \n │ \" Engaged University of Minnesota freshman in the Target brand experience \n", + "data_html": "
text_and_imagespage_view
text
text# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n" Bachelor of Science in Graphic Design\n\n" Cumulative GPA 3.93, Dean's List\n\n" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n" Use my trend awareness to assist customers in their shopping experience\n\n" Thoroughly scan every piece of merchandise for inventory control\n\n" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n" Sell retail and memberships to meet company sales goals\n\n" Build organizational skills by single handedly running all operating procedures\n\n" Communicate with clients to fulfill their wants and needs\n\n" Attend promotional events to market our services\n\n" Handle cash and deposits during opening and closing\n\n" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n" Applied my leadership skills by assisting in the training of coworkers\n\n" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n" Represented Periscope Marketing and Target Inc. at a college event\n\n" Engaged University of Minnesota freshman in the Target brand experience\n
images
None
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_3", + "kind": "operator", + "pipe_code": "extract_job_offer", + "pipe_type": "PipeExtract", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:29.934049Z", + "ended_at": "2026-01-09T15:22:38.534909Z", + "duration_ms": 8600 + }, + "io": { + "inputs": [ + { + "name": "job_offer_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "QzpHH", + "data": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + }, + "data_text": "{\n \"url\": \"https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf\"\n}\n", + "data_html": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf", + "extra": {} + } + ], + "outputs": [ + { + "name": "job_offer_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "Rrzjq", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n\n\n" + }, + "images": [] + }, + "page_view": null + }, + { + "text_and_images": { + "text": { + "text": "· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
· Premium medical, dental, and vision coverage· 401(k) with 6% company match
· Flexible PTO policy· $5,000 annual professional development budget
· Executive coaching program· Wellness reimbursement ($1,200/year)
· 8 paid volunteer days (VTO)· Paid parental leave (26 weeks primary caregiver)
· Employee stock purchase plan (15% discount)· Relocation assistance available
\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ Vice President, Enterprise Sales \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ ACME · San Francisco, CA (Hybrid) Full-time . Executive Level \n │ \n │ \n │ About ACME \n │ \n │ ACME is the global leader in CRM, empowering companies to connect with their customers in \n │ on our core values of Trust, Customer Success, Innovation, and Equality, we're transformin\n │ with their customers across sales, service, marketing, and more. \n │ \n │ \n │ The Opportunity \n │ \n │ We're seeking an exceptional Vice President of Enterprise Sales to lead our North American\n │ drive the next phase of our growth. This is a high-impact role where you'll build and scal\n │ organization, own significant revenue accountability, and work directly with C-suite execu\n │ companies. \n │ \n │ As VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in AR\n │ critical role in shaping our go-to-market strategy. This is an opportunity to make your ma\n │ most innovative technology companies. \n │ \n │ \n │ What You'll Do \n │ \n │ · Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professio\n │ regions \n │ \n │ · Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic pla\n │ \n │ · Strategic Execution: Develop and implement sales strategies that accelerate pipeline gro\n │ rates \n │ \n │ · Customer Relationships: Build and maintain executive relationships with C-level stakehol\n │ accounts \n │ \n │ · Sales Excellence: Drive operational rigor through accurate forecasting, process optimiza\n │ decision making \n │ \n │ · Talent Development: Coach, mentor, and develop the next generation of sales leaders \n │ \n │ · Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Chan\n │ integrated solutions \n │ \n │ · Innovation: Champion new sales methodologies, tools, and approaches that improve team pr\n │ \n │ \n │ What You Bring \n │ \n │ Required Qualifications \n │ \n │ · 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equiv\n │ \n │ · Proven track record of building and scaling enterprise sales teams of 50+ people \n │ \n │ · Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets \n │ \n │ · Deep expertise in complex, consultative sales with 6-12 month sales cycles \n │ \n────────┼───────────────────────────────────────────────────────────────────────────────────────────\n 2 │ · Experience selling SaaS solutions to Fortune 500 enterprises \n │ \n │ · Strong executive presence with ability to engage C-suite buyers \n │ \n │ · Bachelor's degree required; MBA preferred \n │ \n │ What Sets You Apart \n │ \n │ · Experience in CRM, cloud infrastructure, or enterprise software markets \n │ \n │ · Track record of building sales teams from early stage through scale \n │ \n │ · Expertise in account-based selling and strategic account management \n │ \n │ · Strong analytical skills with proficiency in ACME, sales analytics tools \n │ \n │ · History of developing talent - multiple direct reports promoted to leadership roles \n │ \n │ · Experience with channel/partner sales models \n │ \n │ · Passion for coaching and developing high-performing teams \n │ \n │ Leadership Competencies \n │ \n │ · Strategic thinking and business acumen \n │ \n │ · Exceptional communication and executive presence \n │ \n │ · Data-driven decision making \n │ \n │ · Change management and organizational development \n │ \n │ · Cross-functional collaboration \n │ \n │ · Diversity, equity, and inclusion advocacy \n │ \n │ Compensation & Benefits \n │ \n │ Total Target Compensation: $975,000 \n │ \n │ · Base Salary: $325,000 \n │ \n │ · Variable Compensation: $650,000 (at 100% quota attainment) \n │ \n │ · Equity: RSU grant valued at $500,000 (4-year vesting) \n │ \n │ · Sign-on Bonus: $100,000 \n │ \n │ Comprehensive Benefits Package \n │ \n", + "data_html": "
text_and_imagespage_view
text
text# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n<!-- PageBreak -->\n\n
images
None
text
text· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n<table>\n<tr>\n<td>· Premium medical, dental, and vision coverage</td>\n<td>· 401(k) with 6% company match</td>\n</tr>\n<tr>\n<td>· Flexible PTO policy</td>\n<td>· $5,000 annual professional development budget</td>\n</tr>\n<tr>\n<td>· Executive coaching program</td>\n<td>· Wellness reimbursement ($1,200/year)</td>\n</tr>\n<tr>\n<td>· 8 paid volunteer days (VTO)</td>\n<td>· Paid parental leave (26 weeks primary caregiver)</td>\n</tr>\n<tr>\n<td>· Employee stock purchase plan (15% discount)</td>\n<td>· Relocation assistance available</td>\n</tr>\n</table>\n
images
None
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "kind": "controller", + "pipe_code": "analyze_documents", + "pipe_type": "PipeParallel", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:38.541055Z", + "ended_at": "2026-01-09T15:22:45.877785Z", + "duration_ms": 7336 + }, + "io": { + "inputs": [ + { + "name": "cv_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "SWQZK", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n\" Bachelor of Science in Graphic Design\n\n\" Cumulative GPA 3.93, Dean's List\n\n\" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n\" Use my trend awareness to assist customers in their shopping experience\n\n\" Thoroughly scan every piece of merchandise for inventory control\n\n\" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n\" Sell retail and memberships to meet company sales goals\n\n\" Build organizational skills by single handedly running all operating procedures\n\n\" Communicate with clients to fulfill their wants and needs\n\n\" Attend promotional events to market our services\n\n\" Handle cash and deposits during opening and closing\n\n\" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n\" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n\" Applied my leadership skills by assisting in the training of coworkers\n\n\" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n\" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n\" Represented Periscope Marketing and Target Inc. at a college event\n\n\" Engaged University of Minnesota freshman in the Target brand experience\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ JOHN DOE \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ \n │ Full Address . City, State, ZIP . Phone Number . E-mail \n │ \n │ OBJECTIVE: Design apparel print for an innovative retail company \n │ \n │ EDUCATION: \n │ \n │ UNIVERSITY OF MINNESOTA College of Design \" Bachelor of Science in Graphic Design \n │ \n │ \" Cumulative GPA 3.93, Dean's List \n │ \n │ \" Twin cities Iron Range Scholarship \n │ \n │ City, State May 2011 \n │ \n │ WORK EXPERIENCE: \n │ \n │ AMERICAN EAGLE Sales Associate \n │ \n │ City, State July 2009 - present \n │ \n │ · Collaborated with the store merchandiser creating displays to attract clientele \n │ \n │ \" Use my trend awareness to assist customers in their shopping experience \n │ \n │ \" Thoroughly scan every piece of merchandise for inventory control \n │ \n │ \" Process shipment to increase my product knowledge \n │ \n │ PLANET BEACH Spa Consultant City, State Aug. 2008 - present \n │ \n │ \" Sell retail and memberships to meet company sales goals \n │ \n │ \" Build organizational skills by single handedly running all operating procedures \n │ \n │ \" Communicate with clients to fulfill their wants and needs \n │ \n │ \" Attend promotional events to market our services \n │ \n │ \" Handle cash and deposits during opening and closing \n │ \n │ \" Received employee of the month award twice \n │ \n │ HEARTBREAKER Sales Associate City, State May 2008 - Aug. 2008 \n │ \n │ · Stocked sales floor with fast fashion inventory \n │ \n │ · Marked down items allowing me to see unsuccessful merchandise in a retail market \n │ \n │ \" Offered advice and assistance to each guest \n │ \n │ VICTORIA'S SECRET Fashion Representative City, State Jan. 2006 - Feb. 2009 \n │ \n │ \" Applied my leadership skills by assisting in the training of coworkers \n │ \n │ \" Set up mannequins and displays in order to entice future customers \n │ \n │ · Provided superior customer service by helping with consumer decisions \n │ \n │ \" Took seasonal inventory \n │ \n │ VOLUNTEER EXPERIENCE: \n │ \n │ TARGET CORPORATION Brand Ambassador \n │ \n │ City, State August 2009 \n │ \n │ \" Represented Periscope Marketing and Target Inc. at a college event \n │ \n │ \" Engaged University of Minnesota freshman in the Target brand experience \n", + "data_html": "
text_and_imagespage_view
text
text# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n" Bachelor of Science in Graphic Design\n\n" Cumulative GPA 3.93, Dean's List\n\n" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n" Use my trend awareness to assist customers in their shopping experience\n\n" Thoroughly scan every piece of merchandise for inventory control\n\n" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n" Sell retail and memberships to meet company sales goals\n\n" Build organizational skills by single handedly running all operating procedures\n\n" Communicate with clients to fulfill their wants and needs\n\n" Attend promotional events to market our services\n\n" Handle cash and deposits during opening and closing\n\n" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n" Applied my leadership skills by assisting in the training of coworkers\n\n" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n" Represented Periscope Marketing and Target Inc. at a college event\n\n" Engaged University of Minnesota freshman in the Target brand experience\n
images
None
", + "extra": {} + }, + { + "name": "job_offer_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "Rrzjq", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n\n\n" + }, + "images": [] + }, + "page_view": null + }, + { + "text_and_images": { + "text": { + "text": "· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
· Premium medical, dental, and vision coverage· 401(k) with 6% company match
· Flexible PTO policy· $5,000 annual professional development budget
· Executive coaching program· Wellness reimbursement ($1,200/year)
· 8 paid volunteer days (VTO)· Paid parental leave (26 weeks primary caregiver)
· Employee stock purchase plan (15% discount)· Relocation assistance available
\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ Vice President, Enterprise Sales \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ ACME · San Francisco, CA (Hybrid) Full-time . Executive Level \n │ \n │ \n │ About ACME \n │ \n │ ACME is the global leader in CRM, empowering companies to connect with their customers in \n │ on our core values of Trust, Customer Success, Innovation, and Equality, we're transformin\n │ with their customers across sales, service, marketing, and more. \n │ \n │ \n │ The Opportunity \n │ \n │ We're seeking an exceptional Vice President of Enterprise Sales to lead our North American\n │ drive the next phase of our growth. This is a high-impact role where you'll build and scal\n │ organization, own significant revenue accountability, and work directly with C-suite execu\n │ companies. \n │ \n │ As VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in AR\n │ critical role in shaping our go-to-market strategy. This is an opportunity to make your ma\n │ most innovative technology companies. \n │ \n │ \n │ What You'll Do \n │ \n │ · Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professio\n │ regions \n │ \n │ · Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic pla\n │ \n │ · Strategic Execution: Develop and implement sales strategies that accelerate pipeline gro\n │ rates \n │ \n │ · Customer Relationships: Build and maintain executive relationships with C-level stakehol\n │ accounts \n │ \n │ · Sales Excellence: Drive operational rigor through accurate forecasting, process optimiza\n │ decision making \n │ \n │ · Talent Development: Coach, mentor, and develop the next generation of sales leaders \n │ \n │ · Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Chan\n │ integrated solutions \n │ \n │ · Innovation: Champion new sales methodologies, tools, and approaches that improve team pr\n │ \n │ \n │ What You Bring \n │ \n │ Required Qualifications \n │ \n │ · 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equiv\n │ \n │ · Proven track record of building and scaling enterprise sales teams of 50+ people \n │ \n │ · Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets \n │ \n │ · Deep expertise in complex, consultative sales with 6-12 month sales cycles \n │ \n────────┼───────────────────────────────────────────────────────────────────────────────────────────\n 2 │ · Experience selling SaaS solutions to Fortune 500 enterprises \n │ \n │ · Strong executive presence with ability to engage C-suite buyers \n │ \n │ · Bachelor's degree required; MBA preferred \n │ \n │ What Sets You Apart \n │ \n │ · Experience in CRM, cloud infrastructure, or enterprise software markets \n │ \n │ · Track record of building sales teams from early stage through scale \n │ \n │ · Expertise in account-based selling and strategic account management \n │ \n │ · Strong analytical skills with proficiency in ACME, sales analytics tools \n │ \n │ · History of developing talent - multiple direct reports promoted to leadership roles \n │ \n │ · Experience with channel/partner sales models \n │ \n │ · Passion for coaching and developing high-performing teams \n │ \n │ Leadership Competencies \n │ \n │ · Strategic thinking and business acumen \n │ \n │ · Exceptional communication and executive presence \n │ \n │ · Data-driven decision making \n │ \n │ · Change management and organizational development \n │ \n │ · Cross-functional collaboration \n │ \n │ · Diversity, equity, and inclusion advocacy \n │ \n │ Compensation & Benefits \n │ \n │ Total Target Compensation: $975,000 \n │ \n │ · Base Salary: $325,000 \n │ \n │ · Variable Compensation: $650,000 (at 100% quota attainment) \n │ \n │ · Equity: RSU grant valued at $500,000 (4-year vesting) \n │ \n │ · Sign-on Bonus: $100,000 \n │ \n │ Comprehensive Benefits Package \n │ \n", + "data_html": "
text_and_imagespage_view
text
text# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n<!-- PageBreak -->\n\n
images
None
text
text· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n<table>\n<tr>\n<td>· Premium medical, dental, and vision coverage</td>\n<td>· 401(k) with 6% company match</td>\n</tr>\n<tr>\n<td>· Flexible PTO policy</td>\n<td>· $5,000 annual professional development budget</td>\n</tr>\n<tr>\n<td>· Executive coaching program</td>\n<td>· Wellness reimbursement ($1,200/year)</td>\n</tr>\n<tr>\n<td>· 8 paid volunteer days (VTO)</td>\n<td>· Paid parental leave (26 weeks primary caregiver)</td>\n</tr>\n<tr>\n<td>· Employee stock purchase plan (15% discount)</td>\n<td>· Relocation assistance available</td>\n</tr>\n</table>\n
images
None
", + "extra": {} + } + ], + "outputs": [] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_5", + "kind": "operator", + "pipe_code": "analyze_cv", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:38.554069Z", + "ended_at": "2026-01-09T15:22:41.359648Z", + "duration_ms": 2805 + }, + "io": { + "inputs": [ + { + "name": "cv_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "SWQZK", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n\" Bachelor of Science in Graphic Design\n\n\" Cumulative GPA 3.93, Dean's List\n\n\" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n\" Use my trend awareness to assist customers in their shopping experience\n\n\" Thoroughly scan every piece of merchandise for inventory control\n\n\" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n\" Sell retail and memberships to meet company sales goals\n\n\" Build organizational skills by single handedly running all operating procedures\n\n\" Communicate with clients to fulfill their wants and needs\n\n\" Attend promotional events to market our services\n\n\" Handle cash and deposits during opening and closing\n\n\" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n\" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n\" Applied my leadership skills by assisting in the training of coworkers\n\n\" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n\" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n\" Represented Periscope Marketing and Target Inc. at a college event\n\n\" Engaged University of Minnesota freshman in the Target brand experience\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ JOHN DOE \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ \n │ Full Address . City, State, ZIP . Phone Number . E-mail \n │ \n │ OBJECTIVE: Design apparel print for an innovative retail company \n │ \n │ EDUCATION: \n │ \n │ UNIVERSITY OF MINNESOTA College of Design \" Bachelor of Science in Graphic Design \n │ \n │ \" Cumulative GPA 3.93, Dean's List \n │ \n │ \" Twin cities Iron Range Scholarship \n │ \n │ City, State May 2011 \n │ \n │ WORK EXPERIENCE: \n │ \n │ AMERICAN EAGLE Sales Associate \n │ \n │ City, State July 2009 - present \n │ \n │ · Collaborated with the store merchandiser creating displays to attract clientele \n │ \n │ \" Use my trend awareness to assist customers in their shopping experience \n │ \n │ \" Thoroughly scan every piece of merchandise for inventory control \n │ \n │ \" Process shipment to increase my product knowledge \n │ \n │ PLANET BEACH Spa Consultant City, State Aug. 2008 - present \n │ \n │ \" Sell retail and memberships to meet company sales goals \n │ \n │ \" Build organizational skills by single handedly running all operating procedures \n │ \n │ \" Communicate with clients to fulfill their wants and needs \n │ \n │ \" Attend promotional events to market our services \n │ \n │ \" Handle cash and deposits during opening and closing \n │ \n │ \" Received employee of the month award twice \n │ \n │ HEARTBREAKER Sales Associate City, State May 2008 - Aug. 2008 \n │ \n │ · Stocked sales floor with fast fashion inventory \n │ \n │ · Marked down items allowing me to see unsuccessful merchandise in a retail market \n │ \n │ \" Offered advice and assistance to each guest \n │ \n │ VICTORIA'S SECRET Fashion Representative City, State Jan. 2006 - Feb. 2009 \n │ \n │ \" Applied my leadership skills by assisting in the training of coworkers \n │ \n │ \" Set up mannequins and displays in order to entice future customers \n │ \n │ · Provided superior customer service by helping with consumer decisions \n │ \n │ \" Took seasonal inventory \n │ \n │ VOLUNTEER EXPERIENCE: \n │ \n │ TARGET CORPORATION Brand Ambassador \n │ \n │ City, State August 2009 \n │ \n │ \" Represented Periscope Marketing and Target Inc. at a college event \n │ \n │ \" Engaged University of Minnesota freshman in the Target brand experience \n", + "data_html": "
text_and_imagespage_view
text
text# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n" Bachelor of Science in Graphic Design\n\n" Cumulative GPA 3.93, Dean's List\n\n" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n" Use my trend awareness to assist customers in their shopping experience\n\n" Thoroughly scan every piece of merchandise for inventory control\n\n" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n" Sell retail and memberships to meet company sales goals\n\n" Build organizational skills by single handedly running all operating procedures\n\n" Communicate with clients to fulfill their wants and needs\n\n" Attend promotional events to market our services\n\n" Handle cash and deposits during opening and closing\n\n" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n" Applied my leadership skills by assisting in the training of coworkers\n\n" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n" Represented Periscope Marketing and Target Inc. at a college event\n\n" Engaged University of Minnesota freshman in the Target brand experience\n
images
None
", + "extra": {} + } + ], + "outputs": [ + { + "name": "cv_analysis", + "concept": "CVAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "goCJ7", + "data": { + "skills": "Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control", + "years_of_experience": 8.2, + "education": "Bachelor of Science in Graphic Design, University of Minnesota, College of Design", + "previous_roles": "Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation", + "key_achievements": "Received employee of the month award twice at Planet Beach" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n skills │ Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Lea\n │ Inventory Control \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n years_of_experience │ 8.2 \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n education │ Bachelor of Science in Graphic Design, University of Minnesota, College of De\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n previous_roles │ Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Asso\n │ Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corpo\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n key_achievements │ Received employee of the month award twice at Planet Beach \n", + "data_html": "
skillsGraphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control
years_of_experience8.2
educationBachelor of Science in Graphic Design, University of Minnesota, College of Design
previous_rolesSales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation
key_achievementsReceived employee of the month award twice at Planet Beach
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_6", + "kind": "operator", + "pipe_code": "analyze_job_offer", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:38.596905Z", + "ended_at": "2026-01-09T15:22:45.872285Z", + "duration_ms": 7275 + }, + "io": { + "inputs": [ + { + "name": "job_offer_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "Rrzjq", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n\n\n" + }, + "images": [] + }, + "page_view": null + }, + { + "text_and_images": { + "text": { + "text": "· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
· Premium medical, dental, and vision coverage· 401(k) with 6% company match
· Flexible PTO policy· $5,000 annual professional development budget
· Executive coaching program· Wellness reimbursement ($1,200/year)
· 8 paid volunteer days (VTO)· Paid parental leave (26 weeks primary caregiver)
· Employee stock purchase plan (15% discount)· Relocation assistance available
\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ Vice President, Enterprise Sales \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ ACME · San Francisco, CA (Hybrid) Full-time . Executive Level \n │ \n │ \n │ About ACME \n │ \n │ ACME is the global leader in CRM, empowering companies to connect with their customers in \n │ on our core values of Trust, Customer Success, Innovation, and Equality, we're transformin\n │ with their customers across sales, service, marketing, and more. \n │ \n │ \n │ The Opportunity \n │ \n │ We're seeking an exceptional Vice President of Enterprise Sales to lead our North American\n │ drive the next phase of our growth. This is a high-impact role where you'll build and scal\n │ organization, own significant revenue accountability, and work directly with C-suite execu\n │ companies. \n │ \n │ As VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in AR\n │ critical role in shaping our go-to-market strategy. This is an opportunity to make your ma\n │ most innovative technology companies. \n │ \n │ \n │ What You'll Do \n │ \n │ · Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professio\n │ regions \n │ \n │ · Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic pla\n │ \n │ · Strategic Execution: Develop and implement sales strategies that accelerate pipeline gro\n │ rates \n │ \n │ · Customer Relationships: Build and maintain executive relationships with C-level stakehol\n │ accounts \n │ \n │ · Sales Excellence: Drive operational rigor through accurate forecasting, process optimiza\n │ decision making \n │ \n │ · Talent Development: Coach, mentor, and develop the next generation of sales leaders \n │ \n │ · Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Chan\n │ integrated solutions \n │ \n │ · Innovation: Champion new sales methodologies, tools, and approaches that improve team pr\n │ \n │ \n │ What You Bring \n │ \n │ Required Qualifications \n │ \n │ · 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equiv\n │ \n │ · Proven track record of building and scaling enterprise sales teams of 50+ people \n │ \n │ · Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets \n │ \n │ · Deep expertise in complex, consultative sales with 6-12 month sales cycles \n │ \n────────┼───────────────────────────────────────────────────────────────────────────────────────────\n 2 │ · Experience selling SaaS solutions to Fortune 500 enterprises \n │ \n │ · Strong executive presence with ability to engage C-suite buyers \n │ \n │ · Bachelor's degree required; MBA preferred \n │ \n │ What Sets You Apart \n │ \n │ · Experience in CRM, cloud infrastructure, or enterprise software markets \n │ \n │ · Track record of building sales teams from early stage through scale \n │ \n │ · Expertise in account-based selling and strategic account management \n │ \n │ · Strong analytical skills with proficiency in ACME, sales analytics tools \n │ \n │ · History of developing talent - multiple direct reports promoted to leadership roles \n │ \n │ · Experience with channel/partner sales models \n │ \n │ · Passion for coaching and developing high-performing teams \n │ \n │ Leadership Competencies \n │ \n │ · Strategic thinking and business acumen \n │ \n │ · Exceptional communication and executive presence \n │ \n │ · Data-driven decision making \n │ \n │ · Change management and organizational development \n │ \n │ · Cross-functional collaboration \n │ \n │ · Diversity, equity, and inclusion advocacy \n │ \n │ Compensation & Benefits \n │ \n │ Total Target Compensation: $975,000 \n │ \n │ · Base Salary: $325,000 \n │ \n │ · Variable Compensation: $650,000 (at 100% quota attainment) \n │ \n │ · Equity: RSU grant valued at $500,000 (4-year vesting) \n │ \n │ · Sign-on Bonus: $100,000 \n │ \n │ Comprehensive Benefits Package \n │ \n", + "data_html": "
text_and_imagespage_view
text
text# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n<!-- PageBreak -->\n\n
images
None
text
text· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n<table>\n<tr>\n<td>· Premium medical, dental, and vision coverage</td>\n<td>· 401(k) with 6% company match</td>\n</tr>\n<tr>\n<td>· Flexible PTO policy</td>\n<td>· $5,000 annual professional development budget</td>\n</tr>\n<tr>\n<td>· Executive coaching program</td>\n<td>· Wellness reimbursement ($1,200/year)</td>\n</tr>\n<tr>\n<td>· 8 paid volunteer days (VTO)</td>\n<td>· Paid parental leave (26 weeks primary caregiver)</td>\n</tr>\n<tr>\n<td>· Employee stock purchase plan (15% discount)</td>\n<td>· Relocation assistance available</td>\n</tr>\n</table>\n
images
None
", + "extra": {} + } + ], + "outputs": [ + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "4eNhA", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers", + "preferred_skills": "Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams", + "responsibilities": "Lead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools", + "qualifications": "12+ years of experience, Bachelor's degree required; MBA preferred", + "experience_level": "Executive Level" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive p\n │ engage C-suite buyers \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n preferred_skills │ Experience in CRM, cloud infrastructure, or enterprise software markets, Track r\n │ teams from early stage through scale, Expertise in account-based selling and str\n │ management, Strong analytical skills with proficiency in ACME, sales analytics t\n │ developing talent - multiple direct reports promoted to leadership roles, Experi\n │ channel/partner sales models, Passion for coaching and developing high-performin\n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and develop a high-performing team of 60+ enterprise sales professionals, O\n │ ARR with full P&L accountability, Develop and implement sales strategies that ac\n │ growth, Build and maintain executive relationships with C-level stakeholders, Dr\n │ through accurate forecasting and process optimization, Coach, mentor, and develo\n │ sales leaders, Partner with cross-functional teams to deliver integrated solutio\n │ methodologies and tools \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of experience, Bachelor's degree required; MBA preferred \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n experience_level │ Executive Level \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers
preferred_skillsExperience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams
responsibilitiesLead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools
qualifications12+ years of experience, Bachelor's degree required; MBA preferred
experience_levelExecutive Level
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "kind": "operator", + "pipe_code": "evaluate_match", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:45.879659Z", + "ended_at": "2026-01-09T15:22:49.710236Z", + "duration_ms": 3830 + }, + "io": { + "inputs": [ + { + "name": "cv_analysis", + "concept": "CVAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "goCJ7", + "data": { + "skills": "Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control", + "years_of_experience": 8.2, + "education": "Bachelor of Science in Graphic Design, University of Minnesota, College of Design", + "previous_roles": "Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation", + "key_achievements": "Received employee of the month award twice at Planet Beach" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n skills │ Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Lea\n │ Inventory Control \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n years_of_experience │ 8.2 \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n education │ Bachelor of Science in Graphic Design, University of Minnesota, College of De\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n previous_roles │ Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Asso\n │ Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corpo\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n key_achievements │ Received employee of the month award twice at Planet Beach \n", + "data_html": "
skillsGraphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control
years_of_experience8.2
educationBachelor of Science in Graphic Design, University of Minnesota, College of Design
previous_rolesSales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation
key_achievementsReceived employee of the month award twice at Planet Beach
", + "extra": {} + }, + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "4eNhA", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers", + "preferred_skills": "Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams", + "responsibilities": "Lead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools", + "qualifications": "12+ years of experience, Bachelor's degree required; MBA preferred", + "experience_level": "Executive Level" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive p\n │ engage C-suite buyers \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n preferred_skills │ Experience in CRM, cloud infrastructure, or enterprise software markets, Track r\n │ teams from early stage through scale, Expertise in account-based selling and str\n │ management, Strong analytical skills with proficiency in ACME, sales analytics t\n │ developing talent - multiple direct reports promoted to leadership roles, Experi\n │ channel/partner sales models, Passion for coaching and developing high-performin\n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and develop a high-performing team of 60+ enterprise sales professionals, O\n │ ARR with full P&L accountability, Develop and implement sales strategies that ac\n │ growth, Build and maintain executive relationships with C-level stakeholders, Dr\n │ through accurate forecasting and process optimization, Coach, mentor, and develo\n │ sales leaders, Partner with cross-functional teams to deliver integrated solutio\n │ methodologies and tools \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of experience, Bachelor's degree required; MBA preferred \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n experience_level │ Executive Level \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers
preferred_skillsExperience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams
responsibilitiesLead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools
qualifications12+ years of experience, Bachelor's degree required; MBA preferred
experience_levelExecutive Level
", + "extra": {} + } + ], + "outputs": [ + { + "name": "match_analysis", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "BNhCF", + "data": { + "overall_match_score": 10.0, + "matching_skills": "Customer Service, Organizational Skills, Leadership, Sales", + "missing_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA", + "experience_alignment": "The candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.", + "areas_of_concern": "The candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.", + "areas_to_explore": "Discuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n overall_match_score │ 10.0 \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n matching_skills │ Customer Service, Organizational Skills, Leadership, Sales \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n missing_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executi\n │ to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterp\n │ Track record of building sales teams from early stage through scale, Experti\n │ selling and strategic account management, Strong analytical skills with prof\n │ analytics tools, History of developing talent - multiple direct reports prom\n │ roles, Experience with channel/partner sales models, Passion for coaching an\n │ high-performing teams, 12+ years of experience, MBA \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n experience_alignment │ The candidate has 8.2 years of experience, which is below the required 12+ y\n │ executive-level position. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_of_concern │ The candidate lacks the necessary experience in SaaS sales and executive-lev\n │ which are critical for this role. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_to_explore │ Discuss the candidate's leadership experience and ability to develop teams, \n │ understanding of enterprise sales strategies. \n", + "data_html": "
overall_match_score10.0
matching_skillsCustomer Service, Organizational Skills, Leadership, Sales
missing_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA
experience_alignmentThe candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.
areas_of_concernThe candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.
areas_to_exploreDiscuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "kind": "operator", + "pipe_code": "generate_interview_questions", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:49.712219Z", + "ended_at": "2026-01-09T15:22:54.670016Z", + "duration_ms": 4957 + }, + "io": { + "inputs": [ + { + "name": "cv_analysis", + "concept": "CVAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "goCJ7", + "data": { + "skills": "Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control", + "years_of_experience": 8.2, + "education": "Bachelor of Science in Graphic Design, University of Minnesota, College of Design", + "previous_roles": "Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation", + "key_achievements": "Received employee of the month award twice at Planet Beach" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n skills │ Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Lea\n │ Inventory Control \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n years_of_experience │ 8.2 \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n education │ Bachelor of Science in Graphic Design, University of Minnesota, College of De\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n previous_roles │ Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Asso\n │ Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corpo\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n key_achievements │ Received employee of the month award twice at Planet Beach \n", + "data_html": "
skillsGraphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control
years_of_experience8.2
educationBachelor of Science in Graphic Design, University of Minnesota, College of Design
previous_rolesSales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation
key_achievementsReceived employee of the month award twice at Planet Beach
", + "extra": {} + }, + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "4eNhA", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers", + "preferred_skills": "Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams", + "responsibilities": "Lead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools", + "qualifications": "12+ years of experience, Bachelor's degree required; MBA preferred", + "experience_level": "Executive Level" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive p\n │ engage C-suite buyers \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n preferred_skills │ Experience in CRM, cloud infrastructure, or enterprise software markets, Track r\n │ teams from early stage through scale, Expertise in account-based selling and str\n │ management, Strong analytical skills with proficiency in ACME, sales analytics t\n │ developing talent - multiple direct reports promoted to leadership roles, Experi\n │ channel/partner sales models, Passion for coaching and developing high-performin\n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and develop a high-performing team of 60+ enterprise sales professionals, O\n │ ARR with full P&L accountability, Develop and implement sales strategies that ac\n │ growth, Build and maintain executive relationships with C-level stakeholders, Dr\n │ through accurate forecasting and process optimization, Coach, mentor, and develo\n │ sales leaders, Partner with cross-functional teams to deliver integrated solutio\n │ methodologies and tools \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of experience, Bachelor's degree required; MBA preferred \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n experience_level │ Executive Level \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers
preferred_skillsExperience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams
responsibilitiesLead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools
qualifications12+ years of experience, Bachelor's degree required; MBA preferred
experience_levelExecutive Level
", + "extra": {} + }, + { + "name": "match_analysis", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "BNhCF", + "data": { + "overall_match_score": 10.0, + "matching_skills": "Customer Service, Organizational Skills, Leadership, Sales", + "missing_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA", + "experience_alignment": "The candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.", + "areas_of_concern": "The candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.", + "areas_to_explore": "Discuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n overall_match_score │ 10.0 \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n matching_skills │ Customer Service, Organizational Skills, Leadership, Sales \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n missing_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executi\n │ to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterp\n │ Track record of building sales teams from early stage through scale, Experti\n │ selling and strategic account management, Strong analytical skills with prof\n │ analytics tools, History of developing talent - multiple direct reports prom\n │ roles, Experience with channel/partner sales models, Passion for coaching an\n │ high-performing teams, 12+ years of experience, MBA \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n experience_alignment │ The candidate has 8.2 years of experience, which is below the required 12+ y\n │ executive-level position. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_of_concern │ The candidate lacks the necessary experience in SaaS sales and executive-lev\n │ which are critical for this role. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_to_explore │ Discuss the candidate's leadership experience and ability to develop teams, \n │ understanding of enterprise sales strategies. \n", + "data_html": "
overall_match_score10.0
matching_skillsCustomer Service, Organizational Skills, Leadership, Sales
missing_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA
experience_alignmentThe candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.
areas_of_concernThe candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.
areas_to_exploreDiscuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.
", + "extra": {} + } + ], + "outputs": [ + { + "name": "interview_questions", + "concept": "InterviewQuestion", + "content_type": null, + "preview": null, + "size": null, + "digest": "jPjA4", + "data": { + "items": [ + { + "question_text": "Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?", + "purpose": "To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role." + }, + { + "question_text": "What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?", + "purpose": "To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position." + }, + { + "question_text": "Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?", + "purpose": "To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role." + }, + { + "question_text": "Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?", + "purpose": "To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor." + }, + { + "question_text": "What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?", + "purpose": "To investigate the candidate's passion for talent development and their history of fostering leadership within their teams." + } + ] + }, + "data_text": " 1 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Can you describe your experience in leading and developing sales teams? \n │ │ you implemented to ensure their success? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To assess the candidate's leadership experience and ability to develop h\n │ │ which is crucial for the role. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 2 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ What approaches have you used to engage C-suite executives in your previ\n │ │ provide an example of a successful engagement? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To evaluate the candidate's executive presence and ability to build rela\n │ │ high-level stakeholders, which is essential for the position. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 3 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Given your background in retail sales, how do you plan to transition you\n │ │ SaaS solutions to enterprise clients? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To explore the candidate's understanding of SaaS sales and their ability\n │ │ to meet the requirements of the role. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 4 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Can you discuss a time when you had to analyze sales data to make strate\n │ │ tools did you use, and what was the outcome? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To assess the candidate's analytical skills and familiarity with sales a\n │ │ are important for driving operational rigor. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 5 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ What is your philosophy on coaching and developing talent within a sales\n │ │ specific instance where you successfully promoted someone to a leadershi\n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To investigate the candidate's passion for talent development and their \n │ │ leadership within their teams. \n", + "data_html": "
question_textpurpose
Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role.
What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position.
Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role.
Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor.
What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?To investigate the candidate's passion for talent development and their history of fostering leadership within their teams.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_9", + "kind": "operator", + "pipe_code": "compose_interview_sheet", + "pipe_type": "PipeCompose", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:54.671388Z", + "ended_at": "2026-01-09T15:22:54.742871Z", + "duration_ms": 71 + }, + "io": { + "inputs": [ + { + "name": "match_analysis", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "BNhCF", + "data": { + "overall_match_score": 10.0, + "matching_skills": "Customer Service, Organizational Skills, Leadership, Sales", + "missing_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA", + "experience_alignment": "The candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.", + "areas_of_concern": "The candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.", + "areas_to_explore": "Discuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n overall_match_score │ 10.0 \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n matching_skills │ Customer Service, Organizational Skills, Leadership, Sales \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n missing_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executi\n │ to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterp\n │ Track record of building sales teams from early stage through scale, Experti\n │ selling and strategic account management, Strong analytical skills with prof\n │ analytics tools, History of developing talent - multiple direct reports prom\n │ roles, Experience with channel/partner sales models, Passion for coaching an\n │ high-performing teams, 12+ years of experience, MBA \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n experience_alignment │ The candidate has 8.2 years of experience, which is below the required 12+ y\n │ executive-level position. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_of_concern │ The candidate lacks the necessary experience in SaaS sales and executive-lev\n │ which are critical for this role. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_to_explore │ Discuss the candidate's leadership experience and ability to develop teams, \n │ understanding of enterprise sales strategies. \n", + "data_html": "
overall_match_score10.0
matching_skillsCustomer Service, Organizational Skills, Leadership, Sales
missing_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA
experience_alignmentThe candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.
areas_of_concernThe candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.
areas_to_exploreDiscuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.
", + "extra": {} + }, + { + "name": "interview_questions", + "concept": "InterviewQuestion", + "content_type": null, + "preview": null, + "size": null, + "digest": "jPjA4", + "data": { + "items": [ + { + "question_text": "Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?", + "purpose": "To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role." + }, + { + "question_text": "What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?", + "purpose": "To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position." + }, + { + "question_text": "Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?", + "purpose": "To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role." + }, + { + "question_text": "Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?", + "purpose": "To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor." + }, + { + "question_text": "What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?", + "purpose": "To investigate the candidate's passion for talent development and their history of fostering leadership within their teams." + } + ] + }, + "data_text": " 1 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Can you describe your experience in leading and developing sales teams? \n │ │ you implemented to ensure their success? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To assess the candidate's leadership experience and ability to develop h\n │ │ which is crucial for the role. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 2 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ What approaches have you used to engage C-suite executives in your previ\n │ │ provide an example of a successful engagement? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To evaluate the candidate's executive presence and ability to build rela\n │ │ high-level stakeholders, which is essential for the position. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 3 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Given your background in retail sales, how do you plan to transition you\n │ │ SaaS solutions to enterprise clients? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To explore the candidate's understanding of SaaS sales and their ability\n │ │ to meet the requirements of the role. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 4 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Can you discuss a time when you had to analyze sales data to make strate\n │ │ tools did you use, and what was the outcome? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To assess the candidate's analytical skills and familiarity with sales a\n │ │ are important for driving operational rigor. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 5 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ What is your philosophy on coaching and developing talent within a sales\n │ │ specific instance where you successfully promoted someone to a leadershi\n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To investigate the candidate's passion for talent development and their \n │ │ leadership within their teams. \n", + "data_html": "
question_textpurpose
Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role.
What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position.
Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role.
Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor.
What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?To investigate the candidate's passion for talent development and their history of fostering leadership within their teams.
", + "extra": {} + } + ], + "outputs": [ + { + "name": "interview_sheet", + "concept": "InterviewSheet", + "content_type": null, + "preview": null, + "size": null, + "digest": "nbqHw", + "data": { + "overall_match_score": 10.0, + "matching_skills": "Customer Service, Organizational Skills, Leadership, Sales", + "missing_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA", + "experience_alignment": "The candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.", + "areas_of_concern": "The candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.", + "areas_to_explore": "Discuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.", + "questions": [ + { + "question_text": "Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?", + "purpose": "To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role." + }, + { + "question_text": "What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?", + "purpose": "To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position." + }, + { + "question_text": "Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?", + "purpose": "To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role." + }, + { + "question_text": "Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?", + "purpose": "To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor." + }, + { + "question_text": "What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?", + "purpose": "To investigate the candidate's passion for talent development and their history of fostering leadership within their teams." + } + ] + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n overall_match_score │ 10.0 \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n matching_skills │ Customer Service, Organizational Skills, Leadership, Sales \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n missing_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executi\n │ to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterp\n │ Track record of building sales teams from early stage through scale, Experti\n │ selling and strategic account management, Strong analytical skills with prof\n │ analytics tools, History of developing talent - multiple direct reports prom\n │ roles, Experience with channel/partner sales models, Passion for coaching an\n │ high-performing teams, 12+ years of experience, MBA \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n experience_alignment │ The candidate has 8.2 years of experience, which is below the required 12+ y\n │ executive-level position. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_of_concern │ The candidate lacks the necessary experience in SaaS sales and executive-lev\n │ which are critical for this role. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_to_explore │ Discuss the candidate's leadership experience and ability to develop teams, \n │ understanding of enterprise sales strategies. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n questions │ 1 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Can you describe your experience in leading and dev\n │ │ │ strategies have you implemented to ensure their suc\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To assess the candidate's leadership experience and\n │ │ │ high-performing teams, which is crucial for the rol\n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 2 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ What approaches have you used to engage C-suite exe\n │ │ │ Can you provide an example of a successful engageme\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To evaluate the candidate's executive presence and \n │ │ │ with high-level stakeholders, which is essential fo\n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 3 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Given your background in retail sales, how do you p\n │ │ │ to selling SaaS solutions to enterprise clients? \n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To explore the candidate's understanding of SaaS sa\n │ │ │ their skills to meet the requirements of the role. \n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 4 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Can you discuss a time when you had to analyze sale\n │ │ │ decisions? What tools did you use, and what was the\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To assess the candidate's analytical skills and fam\n │ │ │ tools, which are important for driving operational \n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 5 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ What is your philosophy on coaching and developing \n │ │ │ you share a specific instance where you successfull\n │ │ │ leadership role? \n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To investigate the candidate's passion for talent d\n │ │ │ fostering leadership within their teams. \n", + "data_html": "
overall_match_score10.0
matching_skillsCustomer Service, Organizational Skills, Leadership, Sales
missing_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA
experience_alignmentThe candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.
areas_of_concernThe candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.
areas_to_exploreDiscuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.
questions
question_textpurpose
Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role.
What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position.
Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role.
Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor.
What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?To investigate the candidate's passion for talent development and their history of fostering leadership within their teams.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + } + ], + "edges": [ + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_0", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_1", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_1", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_1", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_2", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_2", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_1", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_3", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_3", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_4", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_5", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_5", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_6", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_6", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_7", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_8", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_9", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_9", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_2", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "kind": "data", + "label": "cv_pages", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_10", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_3", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "kind": "data", + "label": "job_offer_pages", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_11", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_2", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_5", + "kind": "data", + "label": "cv_pages", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_12", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_3", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_6", + "kind": "data", + "label": "job_offer_pages", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_13", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_5", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "kind": "data", + "label": "cv_analysis", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_14", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_6", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "kind": "data", + "label": "job_requirements", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_15", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_5", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "kind": "data", + "label": "cv_analysis", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_16", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_6", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "kind": "data", + "label": "job_requirements", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_17", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "kind": "data", + "label": "match_analysis", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_18", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_9", + "kind": "data", + "label": "match_analysis", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_19", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_9", + "kind": "data", + "label": "interview_questions", + "meta": {} + } + ], + "meta": {} +} \ No newline at end of file diff --git a/examples/cv_and_offer/inputs.json b/examples/cv_and_offer/inputs.json new file mode 100644 index 0000000..065853a --- /dev/null +++ b/examples/cv_and_offer/inputs.json @@ -0,0 +1,14 @@ +{ + "cv_pdf": { + "concept": "native.Document", + "content": { + "url": "data/CVx5/CV-01.pdf" + } + }, + "job_offer_pdf": { + "concept": "native.Document", + "content": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + } + } +} \ No newline at end of file diff --git a/examples/cv_and_offer/mermaidflow.html b/examples/cv_and_offer/mermaidflow.html new file mode 100644 index 0000000..13e6222 --- /dev/null +++ b/examples/cv_and_offer/mermaidflow.html @@ -0,0 +1,830 @@ + + + + + +Pipeline: Cv Job Match + + + + + + +
+

Pipeline: Cv Job Match

+
+ + +
+
+
+
+
+

Click on data nodes (rounded pills) to view their full content

+ +
+
+ Data Content + × +
+
+
+ + + +
+
+ + + +
+
+ +
+ + + + \ No newline at end of file diff --git a/examples/cv_and_offer/reactflow.html b/examples/cv_and_offer/reactflow.html new file mode 100644 index 0000000..1ef522b --- /dev/null +++ b/examples/cv_and_offer/reactflow.html @@ -0,0 +1,3924 @@ + + + + + +Pipeline: Cv Job Match + + + + + + + + + + + + + + + + + +
+
+
+ + + Pipeline: Cv Job Match +
+ +
+
+
+ +
+
+
+
+
Node Details
+
+
+ × +
+
+
+ +
Click on nodes to view details
+ + +
+
+
+
Data
+
Data Item
+
+
+ + +
+
+
+
+
+ + + +
+
+
+
+ +
+ + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/examples/cv_batch/bundle.plx b/examples/cv_batch/bundle.plx new file mode 100644 index 0000000..f9992db --- /dev/null +++ b/examples/cv_batch/bundle.plx @@ -0,0 +1,124 @@ +domain = "cv_job_matching" +description = "Analyzing CV and job offer compatibility and generating interview questions" +system_prompt = "None" +main_pipe = "batch_analyze_cvs_for_job_offer" + +[concept.CandidateProfile] +description = "A structured summary of a job candidate's professional background extracted from their CV." + +[concept.CandidateProfile.structure] +skills = { type = "text", description = "Technical and soft skills possessed by the candidate", required = true } +experience = { type = "text", description = "Work history and professional experience", required = true } +education = { type = "text", description = "Educational background and qualifications", required = true } +achievements = { type = "text", description = "Notable accomplishments and certifications" } + +[concept.JobRequirements] +description = "A structured summary of what a job position requires from candidates." + +[concept.JobRequirements.structure] +required_skills = { type = "text", description = "Skills that are mandatory for the position", required = true } +responsibilities = { type = "text", description = "Main duties and tasks of the role", required = true } +qualifications = { type = "text", description = "Required education, certifications, or experience levels", required = true } +nice_to_haves = { type = "text", description = "Preferred but not mandatory qualifications" } + +[concept.MatchAnalysis] +description = "An evaluation of how well a candidate fits a job position." + +[concept.MatchAnalysis.structure] +match_score = { type = "number", description = "Numerical score representing overall fit percentage between 0 and 100", required = true } +strengths = { type = "text", description = "Areas where the candidate meets or exceeds requirements", required = true } +gaps = { type = "text", description = "Areas where the candidate falls short of requirements", required = true } +overall_assessment = { type = "text", description = "Summary evaluation of the candidate's suitability", required = true } + +[pipe.batch_analyze_cvs_for_job_offer] +type = "PipeSequence" +description = """ +Main orchestrator pipe that takes a bunch of CVs and a job offer in PDF format, and analyzes how they match. +""" +inputs = { cvs = "Document[]", job_offer_pdf = "Document" } +output = "MatchAnalysis[]" +steps = [ + { pipe = "extract_job_offer", result = "job_offer_pages" }, + { pipe = "analyze_job_requirements", result = "job_requirements" }, + { pipe = "process_cv", batch_over = "cvs", batch_as = "cv_pdf", result = "match_analyses" }, +] + +[pipe.extract_job_offer] +type = "PipeExtract" +description = "Extracts text content from the job offer PDF document" +inputs = { job_offer_pdf = "Document" } +output = "Page[]" +model = "$extract-text-from-pdf" + +[pipe.analyze_job_requirements] +type = "PipeLLM" +description = """ +Parses and summarizes the job requirements from the extracted job offer content, identifying required skills, responsibilities, qualifications, and nice-to-haves +""" +inputs = { job_offer_pages = "Page" } +output = "JobRequirements" +model = "$writing-factual" +system_prompt = """ +You are an expert HR analyst specializing in parsing job descriptions. Your task is to extract and summarize job requirements into a structured format. +""" +prompt = """ +Analyze the following job offer content and extract the key requirements for the position. + +@job_offer_pages +""" + +[pipe.process_cv] +type = "PipeSequence" +description = "Processes one application" +inputs = { cv_pdf = "Document", job_requirements = "JobRequirements" } +output = "MatchAnalysis" +steps = [ + { pipe = "extract_cv", result = "cv_pages" }, + { pipe = "analyze_cv", result = "candidate_profile" }, + { pipe = "analyze_match", result = "match_analysis" }, +] + +[pipe.extract_cv] +type = "PipeExtract" +description = "Extracts text content from the CV PDF document" +inputs = { cv_pdf = "Document" } +output = "Page[]" +model = "$extract-text-from-pdf" + +[pipe.analyze_cv] +type = "PipeLLM" +description = """ +Parses and summarizes the candidate's professional profile from the extracted CV content, identifying skills, experience, education, and achievements +""" +inputs = { cv_pages = "Page" } +output = "CandidateProfile" +model = "$writing-factual" +system_prompt = """ +You are an expert HR analyst specializing in parsing and summarizing candidate CVs. Your task is to extract and structure the candidate's professional profile into a structured format. +""" +prompt = """ +Analyze the following CV content and extract the candidate's professional profile. + +@cv_pages +""" + +[pipe.analyze_match] +type = "PipeLLM" +description = """ +Evaluates how well the candidate matches the job requirements, calculating a match score and identifying strengths and gaps +""" +inputs = { candidate_profile = "CandidateProfile", job_requirements = "JobRequirements" } +output = "MatchAnalysis" +model = "$writing-factual" +system_prompt = """ +You are an expert HR analyst specializing in candidate-job fit evaluation. Your task is to produce a structured match analysis comparing a candidate's profile against job requirements. +""" +prompt = """ +Analyze how well the candidate matches the job requirements. Evaluate their fit by comparing their skills, experience, and qualifications against what the position demands. + +@candidate_profile + +@job_requirements + +Provide a comprehensive match analysis including a numerical score, identified strengths, gaps, and an overall assessment. +""" diff --git a/examples/cv_batch/bundle_view.html b/examples/cv_batch/bundle_view.html new file mode 100644 index 0000000..e2bbed0 --- /dev/null +++ b/examples/cv_batch/bundle_view.html @@ -0,0 +1,327 @@ + + + + + + + +
Domain: cv_job_matching
+
+Description: Analyzing CV and job offer compatibility and generating interview questions
+
+Main Pipe: analyze_cv_and_generate_questions
+
+System Prompt: None
+
+
+
+                                              Concepts                                              
+┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
+ Concept: CandidateProfile                                                                        
+                                                                                                  
+ Description: A structured summary of a job candidate's professional background extracted from    
+ their CV.                                                                                        
+                                                                                                  
+ Structure:                                                                                       
+ ┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━┓        
+ ┃ Field        ┃ Description                                          ┃ Type ┃ Required ┃        
+ ┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━┩        
+  skills        Technical and soft skills possessed by the candidate  text  Yes              
+ ├──────────────┼──────────────────────────────────────────────────────┼──────┼──────────┤        
+  experience    Work history and professional experience              text  Yes              
+ ├──────────────┼──────────────────────────────────────────────────────┼──────┼──────────┤        
+  education     Educational background and qualifications             text  Yes              
+ ├──────────────┼──────────────────────────────────────────────────────┼──────┼──────────┤        
+  achievements  Notable accomplishments and certifications            text  No               
+ └──────────────┴──────────────────────────────────────────────────────┴──────┴──────────┘        
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Concept: JobRequirements                                                                         
+                                                                                                  
+ Description: A structured summary of what a job position requires from candidates.               
+                                                                                                  
+ Structure:                                                                                       
+ ┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━┓ 
+ ┃ Field            ┃ Description                                             ┃ Type ┃ Required ┃ 
+ ┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━┩ 
+  required_skills   Skills that are mandatory for the position               text  Yes       
+ ├──────────────────┼─────────────────────────────────────────────────────────┼──────┼──────────┤ 
+  responsibilities  Main duties and tasks of the role                        text  Yes       
+ ├──────────────────┼─────────────────────────────────────────────────────────┼──────┼──────────┤ 
+  qualifications    Required education, certifications, or experience        text  Yes       
+                    levels                                                                   
+ ├──────────────────┼─────────────────────────────────────────────────────────┼──────┼──────────┤ 
+  nice_to_haves     Preferred but not mandatory qualifications               text  No        
+ └──────────────────┴─────────────────────────────────────────────────────────┴──────┴──────────┘ 
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Concept: MatchAnalysis                                                                           
+                                                                                                  
+ Description: An evaluation of how well a candidate fits a job position.                          
+                                                                                                  
+ Structure:                                                                                       
+ ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┓ 
+ ┃ Field              ┃ Description                                         ┃ Type   ┃ Required ┃ 
+ ┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━┩ 
+  match_score         Numerical score representing overall fit percentage  number  Yes       
+ ├────────────────────┼─────────────────────────────────────────────────────┼────────┼──────────┤ 
+  strengths           Areas where the candidate meets or exceeds           text    Yes       
+                      requirements                                                           
+ ├────────────────────┼─────────────────────────────────────────────────────┼────────┼──────────┤ 
+  gaps                Areas where the candidate falls short of             text    Yes       
+                      requirements                                                           
+ ├────────────────────┼─────────────────────────────────────────────────────┼────────┼──────────┤ 
+  overall_assessment  Summary evaluation of the candidate's suitability    text    Yes       
+ └────────────────────┴─────────────────────────────────────────────────────┴────────┴──────────┘ 
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Concept: InterviewQuestion                                                                       
+                                                                                                  
+ Description: A targeted question designed to assess a candidate during an interview.             
+                                                                                                  
+ Structure:                                                                                       
+ ┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━┓                   
+ ┃ Field     ┃ Description                                  ┃ Type ┃ Required ┃                   
+ ┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━┩                   
+  question   The interview question to ask the candidate   text  Yes                         
+ ├───────────┼──────────────────────────────────────────────┼──────┼──────────┤                   
+  rationale  Explanation of why this question is relevant  text  Yes                         
+ └───────────┴──────────────────────────────────────────────┴──────┴──────────┘                   
+└──────────────────────────────────────────────────────────────────────────────────────────────────┘
+
+
+                                               Pipes                                                
+┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
+ Pipe: analyze_cv_and_generate_questions                                                          
+                                                                                                  
+ Type: PipeSequence (PipeController)                                                              
+                                                                                                  
+ Description: Main orchestrator pipe that takes a CV and job offer in PDF format, analyzes their  
+ match, and generates 5 targeted interview questions. This is the entry point of the pipeline.    
+                                                                                                  
+ Inputs:                                                                                          
+ ┌───────────────┬─────┐                                                                          
+  cv_pdf         PDF                                                                           
+ ├───────────────┼─────┤                                                                          
+  job_offer_pdf  PDF                                                                           
+ └───────────────┴─────┘                                                                          
+                                                                                                  
+ Output: InterviewQuestion[5]                                                                     
+                                                                                                  
+ Sequence Steps:                                                                                  
+ ┏━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓                                    
+ ┃ Step ┃ Pipe                         ┃ Result name         ┃                                    
+ ┡━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩                                    
+ │    1 │ extract_documents_parallel    extracted_pages                                         
+ ├──────┼──────────────────────────────┼─────────────────────┤                                    
+ │    2 │ analyze_cv                    candidate_profile                                       
+ ├──────┼──────────────────────────────┼─────────────────────┤                                    
+ │    3 │ analyze_job_requirements      job_requirements                                        
+ ├──────┼──────────────────────────────┼─────────────────────┤                                    
+ │    4 │ analyze_match                 match_analysis                                          
+ ├──────┼──────────────────────────────┼─────────────────────┤                                    
+ │    5 │ generate_interview_questions  interview_questions                                     
+ └──────┴──────────────────────────────┴─────────────────────┘                                    
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Pipe: extract_documents_parallel                                                                 
+                                                                                                  
+ Type: PipeParallel (PipeController)                                                              
+                                                                                                  
+ Description: Extracts text content from both CV and job offer PDFs concurrently                  
+                                                                                                  
+ Inputs:                                                                                          
+ ┌───────────────┬─────┐                                                                          
+  cv_pdf         PDF                                                                           
+ ├───────────────┼─────┤                                                                          
+  job_offer_pdf  PDF                                                                           
+ └───────────────┴─────┘                                                                          
+                                                                                                  
+ Output: Page[]                                                                                   
+                                                                                                  
+ Add Each Output: True                                                                            
+                                                                                                  
+ Parallel Branches:                                                                               
+ ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓                                                 
+ ┃ Branch ┃ Pipe              ┃ Result name     ┃                                                 
+ ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩                                                 
+ │      1 │ extract_cv         cv_pages                                                         
+ ├────────┼───────────────────┼─────────────────┤                                                 
+ │      2 │ extract_job_offer  job_offer_pages                                                  
+ └────────┴───────────────────┴─────────────────┘                                                 
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Pipe: extract_cv                                                                                 
+                                                                                                  
+ Type: PipeExtract (PipeOperator)                                                                 
+                                                                                                  
+ Description: Extracts text content from the CV PDF document                                      
+                                                                                                  
+                                                                                                  
+ Input: cv_pdf (PDF)                                                                              
+                                                                                                  
+ Output: Page[]                                                                                   
+                                                                                                  
+ Extract Skill: extract_text_from_pdf                                                             
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Pipe: extract_job_offer                                                                          
+                                                                                                  
+ Type: PipeExtract (PipeOperator)                                                                 
+                                                                                                  
+ Description: Extracts text content from the job offer PDF document                               
+                                                                                                  
+                                                                                                  
+ Input: job_offer_pdf (PDF)                                                                       
+                                                                                                  
+ Output: Page[]                                                                                   
+                                                                                                  
+ Extract Skill: extract_text_from_pdf                                                             
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Pipe: analyze_cv                                                                                 
+                                                                                                  
+ Type: PipeLLM (PipeOperator)                                                                     
+                                                                                                  
+ Description: Parses and summarizes the candidate's professional profile from the extracted CV    
+ content, identifying skills, experience, education, and achievements                             
+                                                                                                  
+                                                                                                  
+ Input: cv_pages (Page)                                                                           
+                                                                                                  
+ Output: CandidateProfile                                                                         
+                                                                                                  
+ LLM Skill: llm_to_answer_questions                                                               
+                                                                                                  
+ ╭─ System Prompt ──────────────────────────────────────────────────────────────────────────────╮ 
+  You are an expert HR analyst specializing in parsing and summarizing candidate CVs. Your      
+  task is to extract and structure the candidate's professional profile into a structured       
+  format.                                                                                       
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ 
+                                                                                                  
+ ╭─ Prompt ─────────────────────────────────────────────────────────────────────────────────────╮ 
+  Analyze the following CV content and extract the candidate's professional profile.            
+                                                                                                
+  @cv_pages                                                                                     
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ 
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Pipe: analyze_job_requirements                                                                   
+                                                                                                  
+ Type: PipeLLM (PipeOperator)                                                                     
+                                                                                                  
+ Description: Parses and summarizes the job requirements from the extracted job offer content,    
+ identifying required skills, responsibilities, qualifications, and nice-to-haves                 
+                                                                                                  
+                                                                                                  
+ Input: job_offer_pages (Page)                                                                    
+                                                                                                  
+ Output: JobRequirements                                                                          
+                                                                                                  
+ LLM Skill: writing-factual                                                         
+                                                                                                  
+ ╭─ System Prompt ──────────────────────────────────────────────────────────────────────────────╮ 
+  You are an expert HR analyst specializing in parsing job descriptions. Your task is to        
+  extract and summarize job requirements into a structured format.                              
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ 
+                                                                                                  
+ ╭─ Prompt ─────────────────────────────────────────────────────────────────────────────────────╮ 
+  Analyze the following job offer content and extract the key requirements for the position.    
+                                                                                                
+  @job_offer_pages                                                                              
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ 
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Pipe: analyze_match                                                                              
+                                                                                                  
+ Type: PipeLLM (PipeOperator)                                                                     
+                                                                                                  
+ Description: Evaluates how well the candidate matches the job requirements, calculating a match  
+ score and identifying strengths and gaps                                                         
+                                                                                                  
+ Inputs:                                                                                          
+ ┌───────────────────┬──────────────────┐                                                         
+  candidate_profile  CandidateProfile                                                          
+ ├───────────────────┼──────────────────┤                                                         
+  job_requirements   JobRequirements                                                           
+ └───────────────────┴──────────────────┘                                                         
+                                                                                                  
+ Output: MatchAnalysis                                                                            
+                                                                                                  
+ LLM Skill: llm_to_answer_questions                                                               
+                                                                                                  
+ ╭─ System Prompt ──────────────────────────────────────────────────────────────────────────────╮ 
+  You are an expert HR analyst specializing in candidate-job fit evaluation. Your task is to    
+  produce a structured match analysis comparing a candidate's profile against job               
+  requirements.                                                                                 
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ 
+                                                                                                  
+ ╭─ Prompt ─────────────────────────────────────────────────────────────────────────────────────╮ 
+  Analyze how well the candidate matches the job requirements. Evaluate their fit by comparing  
+  their skills, experience, and qualifications against what the position demands.               
+                                                                                                
+  @candidate_profile                                                                            
+                                                                                                
+  @job_requirements                                                                             
+                                                                                                
+  Provide a comprehensive match analysis including a numerical score, identified strengths,     
+  gaps, and an overall assessment.                                                              
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ 
+├──────────────────────────────────────────────────────────────────────────────────────────────────┤
+ Pipe: generate_interview_questions                                                               
+                                                                                                  
+ Type: PipeLLM (PipeOperator)                                                                     
+                                                                                                  
+ Description: Creates 5 targeted interview questions based on the candidate's profile, job        
+ requirements, and identified gaps to assess fit during the interview                             
+                                                                                                  
+ Inputs:                                                                                          
+ ┌───────────────────┬──────────────────┐                                                         
+  candidate_profile  CandidateProfile                                                          
+ ├───────────────────┼──────────────────┤                                                         
+  job_requirements   JobRequirements                                                           
+ ├───────────────────┼──────────────────┤                                                         
+  match_analysis     MatchAnalysis                                                             
+ └───────────────────┴──────────────────┘                                                         
+                                                                                                  
+ Output: InterviewQuestion[5]                                                                     
+                                                                                                  
+ LLM Skill: llm_to_answer_questions                                                               
+                                                                                                  
+ ╭─ System Prompt ──────────────────────────────────────────────────────────────────────────────╮ 
+  You are an expert HR interviewer and talent assessor. Your task is to generate structured     
+  interview questions that will help evaluate a candidate's fit for a specific role. Each       
+  question should be targeted and purposeful, designed to probe areas of strength or address    
+  potential gaps identified in the match analysis.                                              
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ 
+                                                                                                  
+ ╭─ Prompt ─────────────────────────────────────────────────────────────────────────────────────╮ 
+  Based on the following candidate profile, job requirements, and match analysis, generate 5    
+  targeted interview questions to assess the candidate's fit for the role.                      
+                                                                                                
+  @candidate_profile                                                                            
+                                                                                                
+  @job_requirements                                                                             
+                                                                                                
+  @match_analysis                                                                               
+                                                                                                
+  Create questions that:                                                                        
+  - Probe the candidate's strengths to confirm their capabilities                               
+  - Address identified gaps to understand if they can be overcome                               
+  - Assess cultural and role fit                                                                
+  - Evaluate relevant experience and skills                                                     
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ 
+└──────────────────────────────────────────────────────────────────────────────────────────────────┘
+
+ + diff --git a/examples/cv_batch/bundle_view.svg b/examples/cv_batch/bundle_view.svg new file mode 100644 index 0000000..e96c21b --- /dev/null +++ b/examples/cv_batch/bundle_view.svg @@ -0,0 +1,1258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Rich + + + + + + + + + + Domain: cv_job_matching + +Description: Analyzing CV and job offer compatibility and generating interview questions + +Main Pipe: analyze_cv_and_generate_questions + +System Prompt: None + + + +                                              Concepts                                               +┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ +Concept: CandidateProfile + +Description: A structured summary of a job candidate's professional background extracted from  +their CV. + +Structure:                                                                                +┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━┓ +Field       Description                                         TypeRequired +┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━┩ +skills      Technical and soft skills possessed by the candidatetextYes      +├──────────────┼──────────────────────────────────────────────────────┼──────┼──────────┤ +experience  Work history and professional experience            textYes      +├──────────────┼──────────────────────────────────────────────────────┼──────┼──────────┤ +education   Educational background and qualifications           textYes      +├──────────────┼──────────────────────────────────────────────────────┼──────┼──────────┤ +achievementsNotable accomplishments and certifications          textNo       +└──────────────┴──────────────────────────────────────────────────────┴──────┴──────────┘ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Concept: JobRequirements + +Description: A structured summary of what a job position requires from candidates. + +Structure:                                                                                       +┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━┓ +Field           Description                                            TypeRequired +┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━┩ +required_skills Skills that are mandatory for the position             textYes      +├──────────────────┼─────────────────────────────────────────────────────────┼──────┼──────────┤ +responsibilitiesMain duties and tasks of the role                      textYes      +├──────────────────┼─────────────────────────────────────────────────────────┼──────┼──────────┤ +qualifications  Required education, certifications, or experience      textYes      +levels                                                  +├──────────────────┼─────────────────────────────────────────────────────────┼──────┼──────────┤ +nice_to_haves   Preferred but not mandatory qualifications             textNo       +└──────────────────┴─────────────────────────────────────────────────────────┴──────┴──────────┘ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Concept: MatchAnalysis + +Description: An evaluation of how well a candidate fits a job position. + +Structure:                                                                                       +┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┓ +Field             Description                                        Type  Required +┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━┩ +match_score       Numerical score representing overall fit percentagenumberYes      +├────────────────────┼─────────────────────────────────────────────────────┼────────┼──────────┤ +strengths         Areas where the candidate meets or exceeds         text  Yes      +requirements                                        +├────────────────────┼─────────────────────────────────────────────────────┼────────┼──────────┤ +gaps              Areas where the candidate falls short of           text  Yes      +requirements                                        +├────────────────────┼─────────────────────────────────────────────────────┼────────┼──────────┤ +overall_assessmentSummary evaluation of the candidate's suitability  text  Yes      +└────────────────────┴─────────────────────────────────────────────────────┴────────┴──────────┘ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Concept: InterviewQuestion + +Description: A targeted question designed to assess a candidate during an interview. + +Structure:                                                                     +┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━┓ +Field    Description                                 TypeRequired +┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━┩ +question The interview question to ask the candidate textYes      +├───────────┼──────────────────────────────────────────────┼──────┼──────────┤ +rationaleExplanation of why this question is relevanttextYes      +└───────────┴──────────────────────────────────────────────┴──────┴──────────┘ +└──────────────────────────────────────────────────────────────────────────────────────────────────┘ + + +                                               Pipes                                                 +┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ +Pipe: analyze_cv_and_generate_questions + +Type: PipeSequence (PipeController)                                                              + +Description: Main orchestrator pipe that takes a CV and job offer in PDF format, analyzes their  +match, and generates 5 targeted interview questions. This is the entry point of the pipeline. + +Inputs:                 +┌───────────────┬─────┐ +cv_pdf       PDF +├───────────────┼─────┤ +job_offer_pdfPDF +└───────────────┴─────┘ + +Output: InterviewQuestion[5] + +Sequence Steps:                                               +┏━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ +StepPipe                        Result name         +┡━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ +   1extract_documents_parallel  extracted_pages     +├──────┼──────────────────────────────┼─────────────────────┤ +   2analyze_cv                  candidate_profile   +├──────┼──────────────────────────────┼─────────────────────┤ +   3analyze_job_requirements    job_requirements    +├──────┼──────────────────────────────┼─────────────────────┤ +   4analyze_match               match_analysis      +├──────┼──────────────────────────────┼─────────────────────┤ +   5generate_interview_questionsinterview_questions +└──────┴──────────────────────────────┴─────────────────────┘ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Pipe: extract_documents_parallel + +Type: PipeParallel (PipeController)                                                              + +Description: Extracts text content from both CV and job offer PDFs concurrently + +Inputs:                 +┌───────────────┬─────┐ +cv_pdf       PDF +├───────────────┼─────┤ +job_offer_pdfPDF +└───────────────┴─────┘ + +Output: Page[] + +Add Each Output: True + +Parallel Branches:                               +┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ +BranchPipe             Result name     +┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ +     1extract_cv       cv_pages        +├────────┼───────────────────┼─────────────────┤ +     2extract_job_offerjob_offer_pages +└────────┴───────────────────┴─────────────────┘ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Pipe: extract_cv + +Type: PipeExtract (PipeOperator)                                                                 + +Description: Extracts text content from the CV PDF document + + +Input: cv_pdf (PDF)                                                                              + +Output: Page[] + +Extract Skill: extract_text_from_pdf +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Pipe: extract_job_offer + +Type: PipeExtract (PipeOperator)                                                                 + +Description: Extracts text content from the job offer PDF document + + +Input: job_offer_pdf (PDF)                                                                       + +Output: Page[] + +Extract Skill: extract_text_from_pdf +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Pipe: analyze_cv + +Type: PipeLLM (PipeOperator)                                                                     + +Description: Parses and summarizes the candidate's professional profile from the extracted CV  +content, identifying skills, experience, education, and achievements + + +Input: cv_pages (Page)                                                                           + +Output: CandidateProfile + +LLM Skill: llm_to_answer_questions + +╭─ System Prompt ──────────────────────────────────────────────────────────────────────────────╮ +You are an expert HR analyst specializing in parsing and summarizing candidate CVs. Your     +task is to extract and structure the candidate's professional profile into a structured      +format.                                                                                      +╰──────────────────────────────────────────────────────────────────────────────────────────────╯ + +╭─ Prompt ─────────────────────────────────────────────────────────────────────────────────────╮ +Analyze the following CV content and extract the candidate's professional profile.           + +@cv_pages                                                                                    +╰──────────────────────────────────────────────────────────────────────────────────────────────╯ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Pipe: analyze_job_requirements + +Type: PipeLLM (PipeOperator)                                                                     + +Description: Parses and summarizes the job requirements from the extracted job offer content,  +identifying required skills, responsibilities, qualifications, and nice-to-haves + + +Input: job_offer_pages (Page)                                                                    + +Output: JobRequirements + +LLM Skill: writing-factual + +╭─ System Prompt ──────────────────────────────────────────────────────────────────────────────╮ +You are an expert HR analyst specializing in parsing job descriptions. Your task is to       +extract and summarize job requirements into a structured format.                             +╰──────────────────────────────────────────────────────────────────────────────────────────────╯ + +╭─ Prompt ─────────────────────────────────────────────────────────────────────────────────────╮ +Analyze the following job offer content and extract the key requirements for the position.   + +@job_offer_pages                                                                             +╰──────────────────────────────────────────────────────────────────────────────────────────────╯ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Pipe: analyze_match + +Type: PipeLLM (PipeOperator)                                                                     + +Description: Evaluates how well the candidate matches the job requirements, calculating a match  +score and identifying strengths and gaps + +Inputs:                                  +┌───────────────────┬──────────────────┐ +candidate_profileCandidateProfile +├───────────────────┼──────────────────┤ +job_requirements JobRequirements  +└───────────────────┴──────────────────┘ + +Output: MatchAnalysis + +LLM Skill: llm_to_answer_questions + +╭─ System Prompt ──────────────────────────────────────────────────────────────────────────────╮ +You are an expert HR analyst specializing in candidate-job fit evaluation. Your task is to   +produce a structured match analysis comparing a candidate's profile against job              +requirements.                                                                                +╰──────────────────────────────────────────────────────────────────────────────────────────────╯ + +╭─ Prompt ─────────────────────────────────────────────────────────────────────────────────────╮ +Analyze how well the candidate matches the job requirements. Evaluate their fit by comparing +their skills, experience, and qualifications against what the position demands.              + +@candidate_profile                                                                           + +@job_requirements                                                                            + +Provide a comprehensive match analysis including a numerical score, identified strengths,    +gaps, and an overall assessment.                                                             +╰──────────────────────────────────────────────────────────────────────────────────────────────╯ +├──────────────────────────────────────────────────────────────────────────────────────────────────┤ +Pipe: generate_interview_questions + +Type: PipeLLM (PipeOperator)                                                                     + +Description: Creates 5 targeted interview questions based on the candidate's profile, job  +requirements, and identified gaps to assess fit during the interview + +Inputs:                                  +┌───────────────────┬──────────────────┐ +candidate_profileCandidateProfile +├───────────────────┼──────────────────┤ +job_requirements JobRequirements  +├───────────────────┼──────────────────┤ +match_analysis   MatchAnalysis    +└───────────────────┴──────────────────┘ + +Output: InterviewQuestion[5] + +LLM Skill: llm_to_answer_questions + +╭─ System Prompt ──────────────────────────────────────────────────────────────────────────────╮ +You are an expert HR interviewer and talent assessor. Your task is to generate structured    +interview questions that will help evaluate a candidate's fit for a specific role. Each      +question should be targeted and purposeful, designed to probe areas of strength or address   +potential gaps identified in the match analysis.                                             +╰──────────────────────────────────────────────────────────────────────────────────────────────╯ + +╭─ Prompt ─────────────────────────────────────────────────────────────────────────────────────╮ +Based on the following candidate profile, job requirements, and match analysis, generate 5   +targeted interview questions to assess the candidate's fit for the role.                     + +@candidate_profile                                                                           + +@job_requirements                                                                            + +@match_analysis                                                                              + +Create questions that:                                                                       +- Probe the candidate's strengths to confirm their capabilities                              +- Address identified gaps to understand if they can be overcome                              +- Assess cultural and role fit                                                               +- Evaluate relevant experience and skills                                                    +╰──────────────────────────────────────────────────────────────────────────────────────────────╯ +└──────────────────────────────────────────────────────────────────────────────────────────────────┘ + + + + diff --git a/examples/cv_batch/graphspec.json b/examples/cv_batch/graphspec.json new file mode 100644 index 0000000..d9da4c4 --- /dev/null +++ b/examples/cv_batch/graphspec.json @@ -0,0 +1,989 @@ +{ + "graph_id": "99c87409-4150-4c21-9135-831873dc0c5f", + "created_at": "2026-01-09T15:12:15.441734Z", + "pipeline_ref": { + "domain": "cv_job_matching", + "main_pipe": "batch_analyze_cvs_for_job_offer", + "entrypoint": null + }, + "nodes": [ + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_0", + "kind": "controller", + "pipe_code": "batch_analyze_cvs_for_job_offer", + "pipe_type": "PipeSequence", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:15.447388Z", + "ended_at": "2026-01-09T15:13:00.900519Z", + "duration_ms": 45453 + }, + "io": { + "inputs": [ + { + "name": "job_offer_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "29t4Y", + "data": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + }, + "data_text": "{\n \"url\": \"https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf\"\n}\n", + "data_html": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf", + "extra": {} + }, + { + "name": "cvs", + "concept": "Document", + "content_type": null, + "preview": null, + "size": null, + "digest": "8YjGW", + "data": { + "items": [ + { + "url": "data/CVx5/CV-01.pdf" + }, + { + "url": "data/CVx5/CV-02.pdf" + } + ] + }, + "data_text": " 1 │ { \n │ \"url\": \"data/CVx5/CV-01.pdf\" \n │ } \n────────────────────────┼───────────────────────────────────────────────────────────────────────────\n 2 │ { \n │ \"url\": \"data/CVx5/CV-02.pdf\" \n │ } \n", + "data_html": "
url
data/CVx5/CV-01.pdf
data/CVx5/CV-02.pdf
", + "extra": {} + } + ], + "outputs": [ + { + "name": "match_analyses", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "WkYzt", + "data": { + "items": [ + { + "match_score": 28.0, + "strengths": "The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of client engagement, promotional marketing, and team collaboration. They have hands-on experience in visual merchandising, inventory management, and training or leading peers, supported by recognition such as Employee of the Month and academic honors. Their Bachelor of Science in Graphic Design and practical trend awareness indicate creativity and brand-consciousness, while their volunteer role as a Brand Ambassador shows initiative in representing a major corporation on campus.", + "gaps": "The candidate lacks any direct experience in SaaS sales, enterprise software, or cloud infrastructure, and has no demonstrated track record of selling to Fortune 500 companies or engaging C-suite executives. They do not meet the 12+ years of relevant experience requirement, particularly in high-scale revenue ownership ($180M+ ARR) or P&L management. There is no evidence of leading large sales teams (60+ members), strategic sales planning, or using advanced sales analytics tools like ACME. Additionally, the candidate has not shown experience in CRM platforms, account-based selling, channel/partner sales, or cross-functional leadership with Product or Customer Success teams.", + "overall_assessment": "While the candidate exhibits solid foundational skills in sales, customer service, and visual presentation within retail and spa environments, they are not a suitable fit for this senior enterprise sales leadership role. The position demands extensive experience in technology sales at scale, executive engagement, and team leadership far beyond the candidate's current background. Their qualifications align better with retail or consumer-facing sales roles rather than B2B SaaS and enterprise sales leadership." + }, + { + "match_score": 28.0, + "strengths": "The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of performance excellence, including Employee of the Month awards. They possess leadership experience through training coworkers and managing daily operations, as well as organizational and promotional marketing skills. Their educational background in Graphic Design from a reputable program, with a high GPA and scholarship recognition, indicates discipline and visual-strategic thinking, which could support marketing or client-facing presentation elements in sales roles.", + "gaps": "The candidate lacks any direct experience in SaaS, enterprise software, or cloud infrastructure sales, which are central to the role. They have no demonstrated experience selling to Fortune 500 companies or engaging C-suite executives. Their sales background is in retail and spa services, not in high-value B2B or enterprise sales. There is no evidence of leading or scaling a large sales team (60+), P&L or ARR ownership, strategic sales planning, or experience with sales analytics tools like ACME. The candidate’s experience level appears significantly below the 12+ years of relevant enterprise sales leadership required, and there is no indication of an MBA or executive-level strategic competencies such as change management, cross-functional collaboration at scale, or channel/partner sales models.", + "overall_assessment": "While the candidate exhibits strong foundational sales and customer service abilities, along with leadership in retail contexts, they are not a suitable match for this senior enterprise sales leadership role. The position demands extensive experience in SaaS and enterprise sales leadership at a strategic level, which the candidate does not possess. Their background is better aligned with retail sales management or visual merchandising roles rather than scaling a $180M+ ARR business unit." + } + ] + }, + "data_text": " 1 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ match_score │ 28.0 \n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ strengths │ The candidate demonstrates strong customer service, communication, \n │ │ across retail environments, with a consistent record of client enga\n │ │ marketing, and team collaboration. They have hands-on experience in\n │ │ inventory management, and training or leading peers, supported by r\n │ │ Employee of the Month and academic honors. Their Bachelor of Scienc\n │ │ and practical trend awareness indicate creativity and brand-conscio\n │ │ volunteer role as a Brand Ambassador shows initiative in representi\n │ │ on campus. \n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ gaps │ The candidate lacks any direct experience in SaaS sales, enterprise\n │ │ infrastructure, and has no demonstrated track record of selling to \n │ │ or engaging C-suite executives. They do not meet the 12+ years of r\n │ │ requirement, particularly in high-scale revenue ownership ($180M+ A\n │ │ There is no evidence of leading large sales teams (60+ members), st\n │ │ planning, or using advanced sales analytics tools like ACME. Additi\n │ │ has not shown experience in CRM platforms, account-based selling, c\n │ │ or cross-functional leadership with Product or Customer Success tea\n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ overall_assessment │ While the candidate exhibits solid foundational skills in sales, cu\n │ │ visual presentation within retail and spa environments, they are no\n │ │ this senior enterprise sales leadership role. The position demands \n │ │ in technology sales at scale, executive engagement, and team leader\n │ │ candidate's current background. Their qualifications align better w\n │ │ consumer-facing sales roles rather than B2B SaaS and enterprise sal\n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 2 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ match_score │ 28.0 \n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ strengths │ The candidate demonstrates strong customer service, communication, \n │ │ across retail environments, with a consistent record of performance\n │ │ Employee of the Month awards. They possess leadership experience th\n │ │ coworkers and managing daily operations, as well as organizational \n │ │ marketing skills. Their educational background in Graphic Design fr\n │ │ program, with a high GPA and scholarship recognition, indicates dis\n │ │ visual-strategic thinking, which could support marketing or client-\n │ │ elements in sales roles. \n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ gaps │ The candidate lacks any direct experience in SaaS, enterprise softw\n │ │ infrastructure sales, which are central to the role. They have no d\n │ │ selling to Fortune 500 companies or engaging C-suite executives. Th\n │ │ is in retail and spa services, not in high-value B2B or enterprise \n │ │ evidence of leading or scaling a large sales team (60+), P&L or ARR\n │ │ sales planning, or experience with sales analytics tools like ACME.\n │ │ experience level appears significantly below the 12+ years of relev\n │ │ leadership required, and there is no indication of an MBA or execut\n │ │ competencies such as change management, cross-functional collaborat\n │ │ channel/partner sales models. \n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ overall_assessment │ While the candidate exhibits strong foundational sales and customer\n │ │ along with leadership in retail contexts, they are not a suitable m\n │ │ enterprise sales leadership role. The position demands extensive ex\n │ │ enterprise sales leadership at a strategic level, which the candida\n │ │ Their background is better aligned with retail sales management or \n │ │ roles rather than scaling a $180M+ ARR business unit. \n", + "data_html": "
match_scorestrengthsgapsoverall_assessment
28.0The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of client engagement, promotional marketing, and team collaboration. They have hands-on experience in visual merchandising, inventory management, and training or leading peers, supported by recognition such as Employee of the Month and academic honors. Their Bachelor of Science in Graphic Design and practical trend awareness indicate creativity and brand-consciousness, while their volunteer role as a Brand Ambassador shows initiative in representing a major corporation on campus.The candidate lacks any direct experience in SaaS sales, enterprise software, or cloud infrastructure, and has no demonstrated track record of selling to Fortune 500 companies or engaging C-suite executives. They do not meet the 12+ years of relevant experience requirement, particularly in high-scale revenue ownership ($180M+ ARR) or P&L management. There is no evidence of leading large sales teams (60+ members), strategic sales planning, or using advanced sales analytics tools like ACME. Additionally, the candidate has not shown experience in CRM platforms, account-based selling, channel/partner sales, or cross-functional leadership with Product or Customer Success teams.While the candidate exhibits solid foundational skills in sales, customer service, and visual presentation within retail and spa environments, they are not a suitable fit for this senior enterprise sales leadership role. The position demands extensive experience in technology sales at scale, executive engagement, and team leadership far beyond the candidate's current background. Their qualifications align better with retail or consumer-facing sales roles rather than B2B SaaS and enterprise sales leadership.
28.0The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of performance excellence, including Employee of the Month awards. They possess leadership experience through training coworkers and managing daily operations, as well as organizational and promotional marketing skills. Their educational background in Graphic Design from a reputable program, with a high GPA and scholarship recognition, indicates discipline and visual-strategic thinking, which could support marketing or client-facing presentation elements in sales roles.The candidate lacks any direct experience in SaaS, enterprise software, or cloud infrastructure sales, which are central to the role. They have no demonstrated experience selling to Fortune 500 companies or engaging C-suite executives. Their sales background is in retail and spa services, not in high-value B2B or enterprise sales. There is no evidence of leading or scaling a large sales team (60+), P&L or ARR ownership, strategic sales planning, or experience with sales analytics tools like ACME. The candidate’s experience level appears significantly below the 12+ years of relevant enterprise sales leadership required, and there is no indication of an MBA or executive-level strategic competencies such as change management, cross-functional collaboration at scale, or channel/partner sales models.While the candidate exhibits strong foundational sales and customer service abilities, along with leadership in retail contexts, they are not a suitable match for this senior enterprise sales leadership role. The position demands extensive experience in SaaS and enterprise sales leadership at a strategic level, which the candidate does not possess. Their background is better aligned with retail sales management or visual merchandising roles rather than scaling a $180M+ ARR business unit.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_1", + "kind": "operator", + "pipe_code": "extract_job_offer", + "pipe_type": "PipeExtract", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:15.451768Z", + "ended_at": "2026-01-09T15:12:26.771038Z", + "duration_ms": 11319 + }, + "io": { + "inputs": [ + { + "name": "job_offer_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "29t4Y", + "data": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + }, + "data_text": "{\n \"url\": \"https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf\"\n}\n", + "data_html": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf", + "extra": {} + } + ], + "outputs": [ + { + "name": "job_offer_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "Jgvyo", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n\n\n" + }, + "images": [] + }, + "page_view": null + }, + { + "text_and_images": { + "text": { + "text": "· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
· Premium medical, dental, and vision coverage· 401(k) with 6% company match
· Flexible PTO policy· $5,000 annual professional development budget
· Executive coaching program· Wellness reimbursement ($1,200/year)
· 8 paid volunteer days (VTO)· Paid parental leave (26 weeks primary caregiver)
· Employee stock purchase plan (15% discount)· Relocation assistance available
\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ Vice President, Enterprise Sales \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ ACME · San Francisco, CA (Hybrid) Full-time . Executive Level \n │ \n │ \n │ About ACME \n │ \n │ ACME is the global leader in CRM, empowering companies to connect with their customers in \n │ on our core values of Trust, Customer Success, Innovation, and Equality, we're transformin\n │ with their customers across sales, service, marketing, and more. \n │ \n │ \n │ The Opportunity \n │ \n │ We're seeking an exceptional Vice President of Enterprise Sales to lead our North American\n │ drive the next phase of our growth. This is a high-impact role where you'll build and scal\n │ organization, own significant revenue accountability, and work directly with C-suite execu\n │ companies. \n │ \n │ As VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in AR\n │ critical role in shaping our go-to-market strategy. This is an opportunity to make your ma\n │ most innovative technology companies. \n │ \n │ \n │ What You'll Do \n │ \n │ · Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professio\n │ regions \n │ \n │ · Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic pla\n │ \n │ · Strategic Execution: Develop and implement sales strategies that accelerate pipeline gro\n │ rates \n │ \n │ · Customer Relationships: Build and maintain executive relationships with C-level stakehol\n │ accounts \n │ \n │ · Sales Excellence: Drive operational rigor through accurate forecasting, process optimiza\n │ decision making \n │ \n │ · Talent Development: Coach, mentor, and develop the next generation of sales leaders \n │ \n │ · Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Chan\n │ integrated solutions \n │ \n │ · Innovation: Champion new sales methodologies, tools, and approaches that improve team pr\n │ \n │ \n │ What You Bring \n │ \n │ Required Qualifications \n │ \n │ · 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equiv\n │ \n │ · Proven track record of building and scaling enterprise sales teams of 50+ people \n │ \n │ · Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets \n │ \n │ · Deep expertise in complex, consultative sales with 6-12 month sales cycles \n │ \n────────┼───────────────────────────────────────────────────────────────────────────────────────────\n 2 │ · Experience selling SaaS solutions to Fortune 500 enterprises \n │ \n │ · Strong executive presence with ability to engage C-suite buyers \n │ \n │ · Bachelor's degree required; MBA preferred \n │ \n │ What Sets You Apart \n │ \n │ · Experience in CRM, cloud infrastructure, or enterprise software markets \n │ \n │ · Track record of building sales teams from early stage through scale \n │ \n │ · Expertise in account-based selling and strategic account management \n │ \n │ · Strong analytical skills with proficiency in ACME, sales analytics tools \n │ \n │ · History of developing talent - multiple direct reports promoted to leadership roles \n │ \n │ · Experience with channel/partner sales models \n │ \n │ · Passion for coaching and developing high-performing teams \n │ \n │ Leadership Competencies \n │ \n │ · Strategic thinking and business acumen \n │ \n │ · Exceptional communication and executive presence \n │ \n │ · Data-driven decision making \n │ \n │ · Change management and organizational development \n │ \n │ · Cross-functional collaboration \n │ \n │ · Diversity, equity, and inclusion advocacy \n │ \n │ Compensation & Benefits \n │ \n │ Total Target Compensation: $975,000 \n │ \n │ · Base Salary: $325,000 \n │ \n │ · Variable Compensation: $650,000 (at 100% quota attainment) \n │ \n │ · Equity: RSU grant valued at $500,000 (4-year vesting) \n │ \n │ · Sign-on Bonus: $100,000 \n │ \n │ Comprehensive Benefits Package \n │ \n", + "data_html": "
text_and_imagespage_view
text
text# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n<!-- PageBreak -->\n\n
images
None
text
text· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n<table>\n<tr>\n<td>· Premium medical, dental, and vision coverage</td>\n<td>· 401(k) with 6% company match</td>\n</tr>\n<tr>\n<td>· Flexible PTO policy</td>\n<td>· $5,000 annual professional development budget</td>\n</tr>\n<tr>\n<td>· Executive coaching program</td>\n<td>· Wellness reimbursement ($1,200/year)</td>\n</tr>\n<tr>\n<td>· 8 paid volunteer days (VTO)</td>\n<td>· Paid parental leave (26 weeks primary caregiver)</td>\n</tr>\n<tr>\n<td>· Employee stock purchase plan (15% discount)</td>\n<td>· Relocation assistance available</td>\n</tr>\n</table>\n
images
None
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_2", + "kind": "operator", + "pipe_code": "analyze_job_requirements", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:26.772709Z", + "ended_at": "2026-01-09T15:12:31.973970Z", + "duration_ms": 5201 + }, + "io": { + "inputs": [ + { + "name": "job_offer_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "Jgvyo", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n\n\n" + }, + "images": [] + }, + "page_view": null + }, + { + "text_and_images": { + "text": { + "text": "· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
· Premium medical, dental, and vision coverage· 401(k) with 6% company match
· Flexible PTO policy· $5,000 annual professional development budget
· Executive coaching program· Wellness reimbursement ($1,200/year)
· 8 paid volunteer days (VTO)· Paid parental leave (26 weeks primary caregiver)
· Employee stock purchase plan (15% discount)· Relocation assistance available
\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ Vice President, Enterprise Sales \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ ACME · San Francisco, CA (Hybrid) Full-time . Executive Level \n │ \n │ \n │ About ACME \n │ \n │ ACME is the global leader in CRM, empowering companies to connect with their customers in \n │ on our core values of Trust, Customer Success, Innovation, and Equality, we're transformin\n │ with their customers across sales, service, marketing, and more. \n │ \n │ \n │ The Opportunity \n │ \n │ We're seeking an exceptional Vice President of Enterprise Sales to lead our North American\n │ drive the next phase of our growth. This is a high-impact role where you'll build and scal\n │ organization, own significant revenue accountability, and work directly with C-suite execu\n │ companies. \n │ \n │ As VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in AR\n │ critical role in shaping our go-to-market strategy. This is an opportunity to make your ma\n │ most innovative technology companies. \n │ \n │ \n │ What You'll Do \n │ \n │ · Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professio\n │ regions \n │ \n │ · Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic pla\n │ \n │ · Strategic Execution: Develop and implement sales strategies that accelerate pipeline gro\n │ rates \n │ \n │ · Customer Relationships: Build and maintain executive relationships with C-level stakehol\n │ accounts \n │ \n │ · Sales Excellence: Drive operational rigor through accurate forecasting, process optimiza\n │ decision making \n │ \n │ · Talent Development: Coach, mentor, and develop the next generation of sales leaders \n │ \n │ · Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Chan\n │ integrated solutions \n │ \n │ · Innovation: Champion new sales methodologies, tools, and approaches that improve team pr\n │ \n │ \n │ What You Bring \n │ \n │ Required Qualifications \n │ \n │ · 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equiv\n │ \n │ · Proven track record of building and scaling enterprise sales teams of 50+ people \n │ \n │ · Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets \n │ \n │ · Deep expertise in complex, consultative sales with 6-12 month sales cycles \n │ \n────────┼───────────────────────────────────────────────────────────────────────────────────────────\n 2 │ · Experience selling SaaS solutions to Fortune 500 enterprises \n │ \n │ · Strong executive presence with ability to engage C-suite buyers \n │ \n │ · Bachelor's degree required; MBA preferred \n │ \n │ What Sets You Apart \n │ \n │ · Experience in CRM, cloud infrastructure, or enterprise software markets \n │ \n │ · Track record of building sales teams from early stage through scale \n │ \n │ · Expertise in account-based selling and strategic account management \n │ \n │ · Strong analytical skills with proficiency in ACME, sales analytics tools \n │ \n │ · History of developing talent - multiple direct reports promoted to leadership roles \n │ \n │ · Experience with channel/partner sales models \n │ \n │ · Passion for coaching and developing high-performing teams \n │ \n │ Leadership Competencies \n │ \n │ · Strategic thinking and business acumen \n │ \n │ · Exceptional communication and executive presence \n │ \n │ · Data-driven decision making \n │ \n │ · Change management and organizational development \n │ \n │ · Cross-functional collaboration \n │ \n │ · Diversity, equity, and inclusion advocacy \n │ \n │ Compensation & Benefits \n │ \n │ Total Target Compensation: $975,000 \n │ \n │ · Base Salary: $325,000 \n │ \n │ · Variable Compensation: $650,000 (at 100% quota attainment) \n │ \n │ · Equity: RSU grant valued at $500,000 (4-year vesting) \n │ \n │ · Sign-on Bonus: $100,000 \n │ \n │ Comprehensive Benefits Package \n │ \n", + "data_html": "
text_and_imagespage_view
text
text# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n<!-- PageBreak -->\n\n
images
None
text
text· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n<table>\n<tr>\n<td>· Premium medical, dental, and vision coverage</td>\n<td>· 401(k) with 6% company match</td>\n</tr>\n<tr>\n<td>· Flexible PTO policy</td>\n<td>· $5,000 annual professional development budget</td>\n</tr>\n<tr>\n<td>· Executive coaching program</td>\n<td>· Wellness reimbursement ($1,200/year)</td>\n</tr>\n<tr>\n<td>· 8 paid volunteer days (VTO)</td>\n<td>· Paid parental leave (26 weeks primary caregiver)</td>\n</tr>\n<tr>\n<td>· Employee stock purchase plan (15% discount)</td>\n<td>· Relocation assistance available</td>\n</tr>\n</table>\n
images
None
", + "extra": {} + } + ], + "outputs": [ + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "Wp2W2", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises; strong executive presence with ability to engage C-suite buyers.", + "responsibilities": "Lead and scale a team of 60+ enterprise sales professionals; drive revenue with ownership of $180M+ ARR and full P&L accountability; develop and implement sales strategies; build executive relationships with C-level stakeholders; ensure sales excellence through forecasting and process optimization; coach and develop sales leaders; collaborate cross-functionally with Product, Marketing, Customer Success, and Channel teams; champion innovation in sales methodologies and tools.", + "qualifications": "12+ years of relevant experience; bachelor's degree required; MBA preferred.", + "nice_to_haves": "Experience in CRM, cloud infrastructure, or enterprise software markets; track record of building sales teams from early stage through scale; expertise in account-based selling and strategic account management; strong analytical skills with proficiency in ACME and sales analytics tools; history of developing talent with direct reports promoted to leadership roles; experience with channel/partner sales models; passion for coaching and developing high-performing teams; leadership competencies in strategic thinking, communication, data-driven decision making, change management, cross-functional collaboration, and diversity, equity, and inclusion advocacy." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises; strong executive p\n │ engage C-suite buyers. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and scale a team of 60+ enterprise sales professionals; drive revenue with \n │ and full P&L accountability; develop and implement sales strategies; build execu\n │ C-level stakeholders; ensure sales excellence through forecasting and process op\n │ develop sales leaders; collaborate cross-functionally with Product, Marketing, C\n │ Channel teams; champion innovation in sales methodologies and tools. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of relevant experience; bachelor's degree required; MBA preferred. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n nice_to_haves │ Experience in CRM, cloud infrastructure, or enterprise software markets; track r\n │ teams from early stage through scale; expertise in account-based selling and str\n │ management; strong analytical skills with proficiency in ACME and sales analytic\n │ developing talent with direct reports promoted to leadership roles; experience w\n │ sales models; passion for coaching and developing high-performing teams; leaders\n │ strategic thinking, communication, data-driven decision making, change managemen\n │ collaboration, and diversity, equity, and inclusion advocacy. \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises; strong executive presence with ability to engage C-suite buyers.
responsibilitiesLead and scale a team of 60+ enterprise sales professionals; drive revenue with ownership of $180M+ ARR and full P&L accountability; develop and implement sales strategies; build executive relationships with C-level stakeholders; ensure sales excellence through forecasting and process optimization; coach and develop sales leaders; collaborate cross-functionally with Product, Marketing, Customer Success, and Channel teams; champion innovation in sales methodologies and tools.
qualifications12+ years of relevant experience; bachelor's degree required; MBA preferred.
nice_to_havesExperience in CRM, cloud infrastructure, or enterprise software markets; track record of building sales teams from early stage through scale; expertise in account-based selling and strategic account management; strong analytical skills with proficiency in ACME and sales analytics tools; history of developing talent with direct reports promoted to leadership roles; experience with channel/partner sales models; passion for coaching and developing high-performing teams; leadership competencies in strategic thinking, communication, data-driven decision making, change management, cross-functional collaboration, and diversity, equity, and inclusion advocacy.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_3", + "kind": "controller", + "pipe_code": "process_cv_batch", + "pipe_type": "PipeBatch", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:31.974349Z", + "ended_at": "2026-01-09T15:13:00.894918Z", + "duration_ms": 28920 + }, + "io": { + "inputs": [ + { + "name": "cvs", + "concept": "Document", + "content_type": null, + "preview": null, + "size": null, + "digest": "8YjGW", + "data": { + "items": [ + { + "url": "data/CVx5/CV-01.pdf" + }, + { + "url": "data/CVx5/CV-02.pdf" + } + ] + }, + "data_text": " 1 │ { \n │ \"url\": \"data/CVx5/CV-01.pdf\" \n │ } \n────────────────────────┼───────────────────────────────────────────────────────────────────────────\n 2 │ { \n │ \"url\": \"data/CVx5/CV-02.pdf\" \n │ } \n", + "data_html": "
url
data/CVx5/CV-01.pdf
data/CVx5/CV-02.pdf
", + "extra": {} + } + ], + "outputs": [ + { + "name": "match_analyses", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "WkYzt", + "data": { + "items": [ + { + "match_score": 28.0, + "strengths": "The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of client engagement, promotional marketing, and team collaboration. They have hands-on experience in visual merchandising, inventory management, and training or leading peers, supported by recognition such as Employee of the Month and academic honors. Their Bachelor of Science in Graphic Design and practical trend awareness indicate creativity and brand-consciousness, while their volunteer role as a Brand Ambassador shows initiative in representing a major corporation on campus.", + "gaps": "The candidate lacks any direct experience in SaaS sales, enterprise software, or cloud infrastructure, and has no demonstrated track record of selling to Fortune 500 companies or engaging C-suite executives. They do not meet the 12+ years of relevant experience requirement, particularly in high-scale revenue ownership ($180M+ ARR) or P&L management. There is no evidence of leading large sales teams (60+ members), strategic sales planning, or using advanced sales analytics tools like ACME. Additionally, the candidate has not shown experience in CRM platforms, account-based selling, channel/partner sales, or cross-functional leadership with Product or Customer Success teams.", + "overall_assessment": "While the candidate exhibits solid foundational skills in sales, customer service, and visual presentation within retail and spa environments, they are not a suitable fit for this senior enterprise sales leadership role. The position demands extensive experience in technology sales at scale, executive engagement, and team leadership far beyond the candidate's current background. Their qualifications align better with retail or consumer-facing sales roles rather than B2B SaaS and enterprise sales leadership." + }, + { + "match_score": 28.0, + "strengths": "The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of performance excellence, including Employee of the Month awards. They possess leadership experience through training coworkers and managing daily operations, as well as organizational and promotional marketing skills. Their educational background in Graphic Design from a reputable program, with a high GPA and scholarship recognition, indicates discipline and visual-strategic thinking, which could support marketing or client-facing presentation elements in sales roles.", + "gaps": "The candidate lacks any direct experience in SaaS, enterprise software, or cloud infrastructure sales, which are central to the role. They have no demonstrated experience selling to Fortune 500 companies or engaging C-suite executives. Their sales background is in retail and spa services, not in high-value B2B or enterprise sales. There is no evidence of leading or scaling a large sales team (60+), P&L or ARR ownership, strategic sales planning, or experience with sales analytics tools like ACME. The candidate’s experience level appears significantly below the 12+ years of relevant enterprise sales leadership required, and there is no indication of an MBA or executive-level strategic competencies such as change management, cross-functional collaboration at scale, or channel/partner sales models.", + "overall_assessment": "While the candidate exhibits strong foundational sales and customer service abilities, along with leadership in retail contexts, they are not a suitable match for this senior enterprise sales leadership role. The position demands extensive experience in SaaS and enterprise sales leadership at a strategic level, which the candidate does not possess. Their background is better aligned with retail sales management or visual merchandising roles rather than scaling a $180M+ ARR business unit." + } + ] + }, + "data_text": " 1 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ match_score │ 28.0 \n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ strengths │ The candidate demonstrates strong customer service, communication, \n │ │ across retail environments, with a consistent record of client enga\n │ │ marketing, and team collaboration. They have hands-on experience in\n │ │ inventory management, and training or leading peers, supported by r\n │ │ Employee of the Month and academic honors. Their Bachelor of Scienc\n │ │ and practical trend awareness indicate creativity and brand-conscio\n │ │ volunteer role as a Brand Ambassador shows initiative in representi\n │ │ on campus. \n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ gaps │ The candidate lacks any direct experience in SaaS sales, enterprise\n │ │ infrastructure, and has no demonstrated track record of selling to \n │ │ or engaging C-suite executives. They do not meet the 12+ years of r\n │ │ requirement, particularly in high-scale revenue ownership ($180M+ A\n │ │ There is no evidence of leading large sales teams (60+ members), st\n │ │ planning, or using advanced sales analytics tools like ACME. Additi\n │ │ has not shown experience in CRM platforms, account-based selling, c\n │ │ or cross-functional leadership with Product or Customer Success tea\n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ overall_assessment │ While the candidate exhibits solid foundational skills in sales, cu\n │ │ visual presentation within retail and spa environments, they are no\n │ │ this senior enterprise sales leadership role. The position demands \n │ │ in technology sales at scale, executive engagement, and team leader\n │ │ candidate's current background. Their qualifications align better w\n │ │ consumer-facing sales roles rather than B2B SaaS and enterprise sal\n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 2 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ match_score │ 28.0 \n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ strengths │ The candidate demonstrates strong customer service, communication, \n │ │ across retail environments, with a consistent record of performance\n │ │ Employee of the Month awards. They possess leadership experience th\n │ │ coworkers and managing daily operations, as well as organizational \n │ │ marketing skills. Their educational background in Graphic Design fr\n │ │ program, with a high GPA and scholarship recognition, indicates dis\n │ │ visual-strategic thinking, which could support marketing or client-\n │ │ elements in sales roles. \n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ gaps │ The candidate lacks any direct experience in SaaS, enterprise softw\n │ │ infrastructure sales, which are central to the role. They have no d\n │ │ selling to Fortune 500 companies or engaging C-suite executives. Th\n │ │ is in retail and spa services, not in high-value B2B or enterprise \n │ │ evidence of leading or scaling a large sales team (60+), P&L or ARR\n │ │ sales planning, or experience with sales analytics tools like ACME.\n │ │ experience level appears significantly below the 12+ years of relev\n │ │ leadership required, and there is no indication of an MBA or execut\n │ │ competencies such as change management, cross-functional collaborat\n │ │ channel/partner sales models. \n │ ────────────────────┼────────────────────────────────────────────────────────────────────\n │ overall_assessment │ While the candidate exhibits strong foundational sales and customer\n │ │ along with leadership in retail contexts, they are not a suitable m\n │ │ enterprise sales leadership role. The position demands extensive ex\n │ │ enterprise sales leadership at a strategic level, which the candida\n │ │ Their background is better aligned with retail sales management or \n │ │ roles rather than scaling a $180M+ ARR business unit. \n", + "data_html": "
match_scorestrengthsgapsoverall_assessment
28.0The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of client engagement, promotional marketing, and team collaboration. They have hands-on experience in visual merchandising, inventory management, and training or leading peers, supported by recognition such as Employee of the Month and academic honors. Their Bachelor of Science in Graphic Design and practical trend awareness indicate creativity and brand-consciousness, while their volunteer role as a Brand Ambassador shows initiative in representing a major corporation on campus.The candidate lacks any direct experience in SaaS sales, enterprise software, or cloud infrastructure, and has no demonstrated track record of selling to Fortune 500 companies or engaging C-suite executives. They do not meet the 12+ years of relevant experience requirement, particularly in high-scale revenue ownership ($180M+ ARR) or P&L management. There is no evidence of leading large sales teams (60+ members), strategic sales planning, or using advanced sales analytics tools like ACME. Additionally, the candidate has not shown experience in CRM platforms, account-based selling, channel/partner sales, or cross-functional leadership with Product or Customer Success teams.While the candidate exhibits solid foundational skills in sales, customer service, and visual presentation within retail and spa environments, they are not a suitable fit for this senior enterprise sales leadership role. The position demands extensive experience in technology sales at scale, executive engagement, and team leadership far beyond the candidate's current background. Their qualifications align better with retail or consumer-facing sales roles rather than B2B SaaS and enterprise sales leadership.
28.0The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of performance excellence, including Employee of the Month awards. They possess leadership experience through training coworkers and managing daily operations, as well as organizational and promotional marketing skills. Their educational background in Graphic Design from a reputable program, with a high GPA and scholarship recognition, indicates discipline and visual-strategic thinking, which could support marketing or client-facing presentation elements in sales roles.The candidate lacks any direct experience in SaaS, enterprise software, or cloud infrastructure sales, which are central to the role. They have no demonstrated experience selling to Fortune 500 companies or engaging C-suite executives. Their sales background is in retail and spa services, not in high-value B2B or enterprise sales. There is no evidence of leading or scaling a large sales team (60+), P&L or ARR ownership, strategic sales planning, or experience with sales analytics tools like ACME. The candidate’s experience level appears significantly below the 12+ years of relevant enterprise sales leadership required, and there is no indication of an MBA or executive-level strategic competencies such as change management, cross-functional collaboration at scale, or channel/partner sales models.While the candidate exhibits strong foundational sales and customer service abilities, along with leadership in retail contexts, they are not a suitable match for this senior enterprise sales leadership role. The position demands extensive experience in SaaS and enterprise sales leadership at a strategic level, which the candidate does not possess. Their background is better aligned with retail sales management or visual merchandising roles rather than scaling a $180M+ ARR business unit.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_4", + "kind": "controller", + "pipe_code": "process_cv", + "pipe_type": "PipeSequence", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:31.982350Z", + "ended_at": "2026-01-09T15:13:00.886018Z", + "duration_ms": 28903 + }, + "io": { + "inputs": [ + { + "name": "cv_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "8YjGW-branch-0", + "data": { + "url": "data/CVx5/CV-01.pdf" + }, + "data_text": "{\n \"url\": \"data/CVx5/CV-01.pdf\"\n}\n", + "data_html": "data/CVx5/CV-01.pdf", + "extra": {} + }, + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "Wp2W2", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises; strong executive presence with ability to engage C-suite buyers.", + "responsibilities": "Lead and scale a team of 60+ enterprise sales professionals; drive revenue with ownership of $180M+ ARR and full P&L accountability; develop and implement sales strategies; build executive relationships with C-level stakeholders; ensure sales excellence through forecasting and process optimization; coach and develop sales leaders; collaborate cross-functionally with Product, Marketing, Customer Success, and Channel teams; champion innovation in sales methodologies and tools.", + "qualifications": "12+ years of relevant experience; bachelor's degree required; MBA preferred.", + "nice_to_haves": "Experience in CRM, cloud infrastructure, or enterprise software markets; track record of building sales teams from early stage through scale; expertise in account-based selling and strategic account management; strong analytical skills with proficiency in ACME and sales analytics tools; history of developing talent with direct reports promoted to leadership roles; experience with channel/partner sales models; passion for coaching and developing high-performing teams; leadership competencies in strategic thinking, communication, data-driven decision making, change management, cross-functional collaboration, and diversity, equity, and inclusion advocacy." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises; strong executive p\n │ engage C-suite buyers. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and scale a team of 60+ enterprise sales professionals; drive revenue with \n │ and full P&L accountability; develop and implement sales strategies; build execu\n │ C-level stakeholders; ensure sales excellence through forecasting and process op\n │ develop sales leaders; collaborate cross-functionally with Product, Marketing, C\n │ Channel teams; champion innovation in sales methodologies and tools. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of relevant experience; bachelor's degree required; MBA preferred. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n nice_to_haves │ Experience in CRM, cloud infrastructure, or enterprise software markets; track r\n │ teams from early stage through scale; expertise in account-based selling and str\n │ management; strong analytical skills with proficiency in ACME and sales analytic\n │ developing talent with direct reports promoted to leadership roles; experience w\n │ sales models; passion for coaching and developing high-performing teams; leaders\n │ strategic thinking, communication, data-driven decision making, change managemen\n │ collaboration, and diversity, equity, and inclusion advocacy. \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises; strong executive presence with ability to engage C-suite buyers.
responsibilitiesLead and scale a team of 60+ enterprise sales professionals; drive revenue with ownership of $180M+ ARR and full P&L accountability; develop and implement sales strategies; build executive relationships with C-level stakeholders; ensure sales excellence through forecasting and process optimization; coach and develop sales leaders; collaborate cross-functionally with Product, Marketing, Customer Success, and Channel teams; champion innovation in sales methodologies and tools.
qualifications12+ years of relevant experience; bachelor's degree required; MBA preferred.
nice_to_havesExperience in CRM, cloud infrastructure, or enterprise software markets; track record of building sales teams from early stage through scale; expertise in account-based selling and strategic account management; strong analytical skills with proficiency in ACME and sales analytics tools; history of developing talent with direct reports promoted to leadership roles; experience with channel/partner sales models; passion for coaching and developing high-performing teams; leadership competencies in strategic thinking, communication, data-driven decision making, change management, cross-functional collaboration, and diversity, equity, and inclusion advocacy.
", + "extra": {} + } + ], + "outputs": [ + { + "name": "Batch result 1 of match_analyses", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "CjbDQ-branch-0", + "data": { + "match_score": 28.0, + "strengths": "The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of client engagement, promotional marketing, and team collaboration. They have hands-on experience in visual merchandising, inventory management, and training or leading peers, supported by recognition such as Employee of the Month and academic honors. Their Bachelor of Science in Graphic Design and practical trend awareness indicate creativity and brand-consciousness, while their volunteer role as a Brand Ambassador shows initiative in representing a major corporation on campus.", + "gaps": "The candidate lacks any direct experience in SaaS sales, enterprise software, or cloud infrastructure, and has no demonstrated track record of selling to Fortune 500 companies or engaging C-suite executives. They do not meet the 12+ years of relevant experience requirement, particularly in high-scale revenue ownership ($180M+ ARR) or P&L management. There is no evidence of leading large sales teams (60+ members), strategic sales planning, or using advanced sales analytics tools like ACME. Additionally, the candidate has not shown experience in CRM platforms, account-based selling, channel/partner sales, or cross-functional leadership with Product or Customer Success teams.", + "overall_assessment": "While the candidate exhibits solid foundational skills in sales, customer service, and visual presentation within retail and spa environments, they are not a suitable fit for this senior enterprise sales leadership role. The position demands extensive experience in technology sales at scale, executive engagement, and team leadership far beyond the candidate's current background. Their qualifications align better with retail or consumer-facing sales roles rather than B2B SaaS and enterprise sales leadership." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n match_score │ 28.0 \n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n strengths │ The candidate demonstrates strong customer service, communication, and sales e\n │ environments, with a consistent record of client engagement, promotional marke\n │ collaboration. They have hands-on experience in visual merchandising, inventor\n │ training or leading peers, supported by recognition such as Employee of the Mo\n │ Their Bachelor of Science in Graphic Design and practical trend awareness indi\n │ brand-consciousness, while their volunteer role as a Brand Ambassador shows in\n │ a major corporation on campus. \n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n gaps │ The candidate lacks any direct experience in SaaS sales, enterprise software, \n │ and has no demonstrated track record of selling to Fortune 500 companies or en\n │ executives. They do not meet the 12+ years of relevant experience requirement,\n │ high-scale revenue ownership ($180M+ ARR) or P&L management. There is no evide\n │ sales teams (60+ members), strategic sales planning, or using advanced sales a\n │ ACME. Additionally, the candidate has not shown experience in CRM platforms, a\n │ channel/partner sales, or cross-functional leadership with Product or Customer\n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n overall_assessment │ While the candidate exhibits solid foundational skills in sales, customer serv\n │ presentation within retail and spa environments, they are not a suitable fit f\n │ enterprise sales leadership role. The position demands extensive experience in\n │ scale, executive engagement, and team leadership far beyond the candidate's cu\n │ qualifications align better with retail or consumer-facing sales roles rather \n │ enterprise sales leadership. \n", + "data_html": "
match_score28.0
strengthsThe candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of client engagement, promotional marketing, and team collaboration. They have hands-on experience in visual merchandising, inventory management, and training or leading peers, supported by recognition such as Employee of the Month and academic honors. Their Bachelor of Science in Graphic Design and practical trend awareness indicate creativity and brand-consciousness, while their volunteer role as a Brand Ambassador shows initiative in representing a major corporation on campus.
gapsThe candidate lacks any direct experience in SaaS sales, enterprise software, or cloud infrastructure, and has no demonstrated track record of selling to Fortune 500 companies or engaging C-suite executives. They do not meet the 12+ years of relevant experience requirement, particularly in high-scale revenue ownership ($180M+ ARR) or P&L management. There is no evidence of leading large sales teams (60+ members), strategic sales planning, or using advanced sales analytics tools like ACME. Additionally, the candidate has not shown experience in CRM platforms, account-based selling, channel/partner sales, or cross-functional leadership with Product or Customer Success teams.
overall_assessmentWhile the candidate exhibits solid foundational skills in sales, customer service, and visual presentation within retail and spa environments, they are not a suitable fit for this senior enterprise sales leadership role. The position demands extensive experience in technology sales at scale, executive engagement, and team leadership far beyond the candidate's current background. Their qualifications align better with retail or consumer-facing sales roles rather than B2B SaaS and enterprise sales leadership.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_5", + "kind": "operator", + "pipe_code": "extract_cv", + "pipe_type": "PipeExtract", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:31.988916Z", + "ended_at": "2026-01-09T15:12:38.097335Z", + "duration_ms": 6108 + }, + "io": { + "inputs": [ + { + "name": "cv_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "8YjGW-branch-0", + "data": { + "url": "data/CVx5/CV-01.pdf" + }, + "data_text": "{\n \"url\": \"data/CVx5/CV-01.pdf\"\n}\n", + "data_html": "data/CVx5/CV-01.pdf", + "extra": {} + } + ], + "outputs": [ + { + "name": "cv_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "NoP6c", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n\" Bachelor of Science in Graphic Design\n\n\" Cumulative GPA 3.93, Dean's List\n\n\" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n\" Use my trend awareness to assist customers in their shopping experience\n\n\" Thoroughly scan every piece of merchandise for inventory control\n\n\" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n\" Sell retail and memberships to meet company sales goals\n\n\" Build organizational skills by single handedly running all operating procedures\n\n\" Communicate with clients to fulfill their wants and needs\n\n\" Attend promotional events to market our services\n\n\" Handle cash and deposits during opening and closing\n\n\" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n\" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n\" Applied my leadership skills by assisting in the training of coworkers\n\n\" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n\" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n\" Represented Periscope Marketing and Target Inc. at a college event\n\n\" Engaged University of Minnesota freshman in the Target brand experience\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ JOHN DOE \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ \n │ Full Address . City, State, ZIP . Phone Number . E-mail \n │ \n │ OBJECTIVE: Design apparel print for an innovative retail company \n │ \n │ EDUCATION: \n │ \n │ UNIVERSITY OF MINNESOTA College of Design \" Bachelor of Science in Graphic Design \n │ \n │ \" Cumulative GPA 3.93, Dean's List \n │ \n │ \" Twin cities Iron Range Scholarship \n │ \n │ City, State May 2011 \n │ \n │ WORK EXPERIENCE: \n │ \n │ AMERICAN EAGLE Sales Associate \n │ \n │ City, State July 2009 - present \n │ \n │ · Collaborated with the store merchandiser creating displays to attract clientele \n │ \n │ \" Use my trend awareness to assist customers in their shopping experience \n │ \n │ \" Thoroughly scan every piece of merchandise for inventory control \n │ \n │ \" Process shipment to increase my product knowledge \n │ \n │ PLANET BEACH Spa Consultant City, State Aug. 2008 - present \n │ \n │ \" Sell retail and memberships to meet company sales goals \n │ \n │ \" Build organizational skills by single handedly running all operating procedures \n │ \n │ \" Communicate with clients to fulfill their wants and needs \n │ \n │ \" Attend promotional events to market our services \n │ \n │ \" Handle cash and deposits during opening and closing \n │ \n │ \" Received employee of the month award twice \n │ \n │ HEARTBREAKER Sales Associate City, State May 2008 - Aug. 2008 \n │ \n │ · Stocked sales floor with fast fashion inventory \n │ \n │ · Marked down items allowing me to see unsuccessful merchandise in a retail market \n │ \n │ \" Offered advice and assistance to each guest \n │ \n │ VICTORIA'S SECRET Fashion Representative City, State Jan. 2006 - Feb. 2009 \n │ \n │ \" Applied my leadership skills by assisting in the training of coworkers \n │ \n │ \" Set up mannequins and displays in order to entice future customers \n │ \n │ · Provided superior customer service by helping with consumer decisions \n │ \n │ \" Took seasonal inventory \n │ \n │ VOLUNTEER EXPERIENCE: \n │ \n │ TARGET CORPORATION Brand Ambassador \n │ \n │ City, State August 2009 \n │ \n │ \" Represented Periscope Marketing and Target Inc. at a college event \n │ \n │ \" Engaged University of Minnesota freshman in the Target brand experience \n", + "data_html": "
text_and_imagespage_view
text
text# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n" Bachelor of Science in Graphic Design\n\n" Cumulative GPA 3.93, Dean's List\n\n" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n" Use my trend awareness to assist customers in their shopping experience\n\n" Thoroughly scan every piece of merchandise for inventory control\n\n" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n" Sell retail and memberships to meet company sales goals\n\n" Build organizational skills by single handedly running all operating procedures\n\n" Communicate with clients to fulfill their wants and needs\n\n" Attend promotional events to market our services\n\n" Handle cash and deposits during opening and closing\n\n" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n" Applied my leadership skills by assisting in the training of coworkers\n\n" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n" Represented Periscope Marketing and Target Inc. at a college event\n\n" Engaged University of Minnesota freshman in the Target brand experience\n
images
None
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_6", + "kind": "controller", + "pipe_code": "process_cv", + "pipe_type": "PipeSequence", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:31.994842Z", + "ended_at": "2026-01-09T15:12:50.388434Z", + "duration_ms": 18393 + }, + "io": { + "inputs": [ + { + "name": "cv_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "8YjGW-branch-1", + "data": { + "url": "data/CVx5/CV-02.pdf" + }, + "data_text": "{\n \"url\": \"data/CVx5/CV-02.pdf\"\n}\n", + "data_html": "data/CVx5/CV-02.pdf", + "extra": {} + }, + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "Wp2W2", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises; strong executive presence with ability to engage C-suite buyers.", + "responsibilities": "Lead and scale a team of 60+ enterprise sales professionals; drive revenue with ownership of $180M+ ARR and full P&L accountability; develop and implement sales strategies; build executive relationships with C-level stakeholders; ensure sales excellence through forecasting and process optimization; coach and develop sales leaders; collaborate cross-functionally with Product, Marketing, Customer Success, and Channel teams; champion innovation in sales methodologies and tools.", + "qualifications": "12+ years of relevant experience; bachelor's degree required; MBA preferred.", + "nice_to_haves": "Experience in CRM, cloud infrastructure, or enterprise software markets; track record of building sales teams from early stage through scale; expertise in account-based selling and strategic account management; strong analytical skills with proficiency in ACME and sales analytics tools; history of developing talent with direct reports promoted to leadership roles; experience with channel/partner sales models; passion for coaching and developing high-performing teams; leadership competencies in strategic thinking, communication, data-driven decision making, change management, cross-functional collaboration, and diversity, equity, and inclusion advocacy." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises; strong executive p\n │ engage C-suite buyers. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and scale a team of 60+ enterprise sales professionals; drive revenue with \n │ and full P&L accountability; develop and implement sales strategies; build execu\n │ C-level stakeholders; ensure sales excellence through forecasting and process op\n │ develop sales leaders; collaborate cross-functionally with Product, Marketing, C\n │ Channel teams; champion innovation in sales methodologies and tools. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of relevant experience; bachelor's degree required; MBA preferred. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n nice_to_haves │ Experience in CRM, cloud infrastructure, or enterprise software markets; track r\n │ teams from early stage through scale; expertise in account-based selling and str\n │ management; strong analytical skills with proficiency in ACME and sales analytic\n │ developing talent with direct reports promoted to leadership roles; experience w\n │ sales models; passion for coaching and developing high-performing teams; leaders\n │ strategic thinking, communication, data-driven decision making, change managemen\n │ collaboration, and diversity, equity, and inclusion advocacy. \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises; strong executive presence with ability to engage C-suite buyers.
responsibilitiesLead and scale a team of 60+ enterprise sales professionals; drive revenue with ownership of $180M+ ARR and full P&L accountability; develop and implement sales strategies; build executive relationships with C-level stakeholders; ensure sales excellence through forecasting and process optimization; coach and develop sales leaders; collaborate cross-functionally with Product, Marketing, Customer Success, and Channel teams; champion innovation in sales methodologies and tools.
qualifications12+ years of relevant experience; bachelor's degree required; MBA preferred.
nice_to_havesExperience in CRM, cloud infrastructure, or enterprise software markets; track record of building sales teams from early stage through scale; expertise in account-based selling and strategic account management; strong analytical skills with proficiency in ACME and sales analytics tools; history of developing talent with direct reports promoted to leadership roles; experience with channel/partner sales models; passion for coaching and developing high-performing teams; leadership competencies in strategic thinking, communication, data-driven decision making, change management, cross-functional collaboration, and diversity, equity, and inclusion advocacy.
", + "extra": {} + } + ], + "outputs": [ + { + "name": "Batch result 2 of match_analyses", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "CjbDQ-branch-1", + "data": { + "match_score": 28.0, + "strengths": "The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of performance excellence, including Employee of the Month awards. They possess leadership experience through training coworkers and managing daily operations, as well as organizational and promotional marketing skills. Their educational background in Graphic Design from a reputable program, with a high GPA and scholarship recognition, indicates discipline and visual-strategic thinking, which could support marketing or client-facing presentation elements in sales roles.", + "gaps": "The candidate lacks any direct experience in SaaS, enterprise software, or cloud infrastructure sales, which are central to the role. They have no demonstrated experience selling to Fortune 500 companies or engaging C-suite executives. Their sales background is in retail and spa services, not in high-value B2B or enterprise sales. There is no evidence of leading or scaling a large sales team (60+), P&L or ARR ownership, strategic sales planning, or experience with sales analytics tools like ACME. The candidate’s experience level appears significantly below the 12+ years of relevant enterprise sales leadership required, and there is no indication of an MBA or executive-level strategic competencies such as change management, cross-functional collaboration at scale, or channel/partner sales models.", + "overall_assessment": "While the candidate exhibits strong foundational sales and customer service abilities, along with leadership in retail contexts, they are not a suitable match for this senior enterprise sales leadership role. The position demands extensive experience in SaaS and enterprise sales leadership at a strategic level, which the candidate does not possess. Their background is better aligned with retail sales management or visual merchandising roles rather than scaling a $180M+ ARR business unit." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n match_score │ 28.0 \n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n strengths │ The candidate demonstrates strong customer service, communication, and sales e\n │ environments, with a consistent record of performance excellence, including Em\n │ awards. They possess leadership experience through training coworkers and mana\n │ as well as organizational and promotional marketing skills. Their educational \n │ Design from a reputable program, with a high GPA and scholarship recognition, \n │ visual-strategic thinking, which could support marketing or client-facing pres\n │ sales roles. \n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n gaps │ The candidate lacks any direct experience in SaaS, enterprise software, or clo\n │ which are central to the role. They have no demonstrated experience selling to\n │ or engaging C-suite executives. Their sales background is in retail and spa se\n │ high-value B2B or enterprise sales. There is no evidence of leading or scaling\n │ (60+), P&L or ARR ownership, strategic sales planning, or experience with sale\n │ ACME. The candidate’s experience level appears significantly below the 12+ yea\n │ enterprise sales leadership required, and there is no indication of an MBA or \n │ strategic competencies such as change management, cross-functional collaborati\n │ channel/partner sales models. \n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n overall_assessment │ While the candidate exhibits strong foundational sales and customer service ab\n │ leadership in retail contexts, they are not a suitable match for this senior e\n │ leadership role. The position demands extensive experience in SaaS and enterpr\n │ a strategic level, which the candidate does not possess. Their background is b\n │ retail sales management or visual merchandising roles rather than scaling a $1\n", + "data_html": "
match_score28.0
strengthsThe candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of performance excellence, including Employee of the Month awards. They possess leadership experience through training coworkers and managing daily operations, as well as organizational and promotional marketing skills. Their educational background in Graphic Design from a reputable program, with a high GPA and scholarship recognition, indicates discipline and visual-strategic thinking, which could support marketing or client-facing presentation elements in sales roles.
gapsThe candidate lacks any direct experience in SaaS, enterprise software, or cloud infrastructure sales, which are central to the role. They have no demonstrated experience selling to Fortune 500 companies or engaging C-suite executives. Their sales background is in retail and spa services, not in high-value B2B or enterprise sales. There is no evidence of leading or scaling a large sales team (60+), P&L or ARR ownership, strategic sales planning, or experience with sales analytics tools like ACME. The candidate’s experience level appears significantly below the 12+ years of relevant enterprise sales leadership required, and there is no indication of an MBA or executive-level strategic competencies such as change management, cross-functional collaboration at scale, or channel/partner sales models.
overall_assessmentWhile the candidate exhibits strong foundational sales and customer service abilities, along with leadership in retail contexts, they are not a suitable match for this senior enterprise sales leadership role. The position demands extensive experience in SaaS and enterprise sales leadership at a strategic level, which the candidate does not possess. Their background is better aligned with retail sales management or visual merchandising roles rather than scaling a $180M+ ARR business unit.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_7", + "kind": "operator", + "pipe_code": "extract_cv", + "pipe_type": "PipeExtract", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:32.001054Z", + "ended_at": "2026-01-09T15:12:37.985517Z", + "duration_ms": 5984 + }, + "io": { + "inputs": [ + { + "name": "cv_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "8YjGW-branch-1", + "data": { + "url": "data/CVx5/CV-02.pdf" + }, + "data_text": "{\n \"url\": \"data/CVx5/CV-02.pdf\"\n}\n", + "data_html": "data/CVx5/CV-02.pdf", + "extra": {} + } + ], + "outputs": [ + { + "name": "cv_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "b58zN", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n\" Bachelor of Science in Graphic Design\n\n\" Cumulative GPA 3.93, Dean's List\n\n\" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n\" Use my trend awareness to assist customers in their shopping experience\n\n\" Thoroughly scan every piece of merchandise for inventory control\n\n\" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n\" Sell retail and memberships to meet company sales goals\n\n\" Build organizational skills by single handedly running all operating procedures\n\n\" Communicate with clients to fulfill their wants and needs\n\n\" Attend promotional events to market our services\n\n\" Handle cash and deposits during opening and closing\n\n\" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n\" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n\" Applied my leadership skills by assisting in the training of coworkers\n\n\" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n\" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n\" Represented Periscope Marketing and Target Inc. at a college event\n\n\" Engaged University of Minnesota freshman in the Target brand experience\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ JOHN DOE \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ \n │ Full Address . City, State, ZIP . Phone Number . E-mail \n │ \n │ OBJECTIVE: Design apparel print for an innovative retail company \n │ \n │ EDUCATION: \n │ \n │ UNIVERSITY OF MINNESOTA College of Design \" Bachelor of Science in Graphic Design \n │ \n │ \" Cumulative GPA 3.93, Dean's List \n │ \n │ \" Twin cities Iron Range Scholarship \n │ \n │ City, State May 2011 \n │ \n │ WORK EXPERIENCE: \n │ \n │ AMERICAN EAGLE Sales Associate \n │ \n │ City, State July 2009 - present \n │ \n │ · Collaborated with the store merchandiser creating displays to attract clientele \n │ \n │ \" Use my trend awareness to assist customers in their shopping experience \n │ \n │ \" Thoroughly scan every piece of merchandise for inventory control \n │ \n │ \" Process shipment to increase my product knowledge \n │ \n │ PLANET BEACH Spa Consultant City, State Aug. 2008 - present \n │ \n │ \" Sell retail and memberships to meet company sales goals \n │ \n │ \" Build organizational skills by single handedly running all operating procedures \n │ \n │ \" Communicate with clients to fulfill their wants and needs \n │ \n │ \" Attend promotional events to market our services \n │ \n │ \" Handle cash and deposits during opening and closing \n │ \n │ \" Received employee of the month award twice \n │ \n │ HEARTBREAKER Sales Associate City, State May 2008 - Aug. 2008 \n │ \n │ · Stocked sales floor with fast fashion inventory \n │ \n │ · Marked down items allowing me to see unsuccessful merchandise in a retail market \n │ \n │ \" Offered advice and assistance to each guest \n │ \n │ VICTORIA'S SECRET Fashion Representative City, State Jan. 2006 - Feb. 2009 \n │ \n │ \" Applied my leadership skills by assisting in the training of coworkers \n │ \n │ \" Set up mannequins and displays in order to entice future customers \n │ \n │ · Provided superior customer service by helping with consumer decisions \n │ \n │ \" Took seasonal inventory \n │ \n │ VOLUNTEER EXPERIENCE: \n │ \n │ TARGET CORPORATION Brand Ambassador \n │ \n │ City, State August 2009 \n │ \n │ \" Represented Periscope Marketing and Target Inc. at a college event \n │ \n │ \" Engaged University of Minnesota freshman in the Target brand experience \n", + "data_html": "
text_and_imagespage_view
text
text# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n" Bachelor of Science in Graphic Design\n\n" Cumulative GPA 3.93, Dean's List\n\n" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n" Use my trend awareness to assist customers in their shopping experience\n\n" Thoroughly scan every piece of merchandise for inventory control\n\n" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n" Sell retail and memberships to meet company sales goals\n\n" Build organizational skills by single handedly running all operating procedures\n\n" Communicate with clients to fulfill their wants and needs\n\n" Attend promotional events to market our services\n\n" Handle cash and deposits during opening and closing\n\n" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n" Applied my leadership skills by assisting in the training of coworkers\n\n" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n" Represented Periscope Marketing and Target Inc. at a college event\n\n" Engaged University of Minnesota freshman in the Target brand experience\n
images
None
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_8", + "kind": "operator", + "pipe_code": "analyze_cv", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:37.987169Z", + "ended_at": "2026-01-09T15:12:43.864977Z", + "duration_ms": 5877 + }, + "io": { + "inputs": [ + { + "name": "cv_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "b58zN", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n\" Bachelor of Science in Graphic Design\n\n\" Cumulative GPA 3.93, Dean's List\n\n\" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n\" Use my trend awareness to assist customers in their shopping experience\n\n\" Thoroughly scan every piece of merchandise for inventory control\n\n\" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n\" Sell retail and memberships to meet company sales goals\n\n\" Build organizational skills by single handedly running all operating procedures\n\n\" Communicate with clients to fulfill their wants and needs\n\n\" Attend promotional events to market our services\n\n\" Handle cash and deposits during opening and closing\n\n\" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n\" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n\" Applied my leadership skills by assisting in the training of coworkers\n\n\" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n\" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n\" Represented Periscope Marketing and Target Inc. at a college event\n\n\" Engaged University of Minnesota freshman in the Target brand experience\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ JOHN DOE \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ \n │ Full Address . City, State, ZIP . Phone Number . E-mail \n │ \n │ OBJECTIVE: Design apparel print for an innovative retail company \n │ \n │ EDUCATION: \n │ \n │ UNIVERSITY OF MINNESOTA College of Design \" Bachelor of Science in Graphic Design \n │ \n │ \" Cumulative GPA 3.93, Dean's List \n │ \n │ \" Twin cities Iron Range Scholarship \n │ \n │ City, State May 2011 \n │ \n │ WORK EXPERIENCE: \n │ \n │ AMERICAN EAGLE Sales Associate \n │ \n │ City, State July 2009 - present \n │ \n │ · Collaborated with the store merchandiser creating displays to attract clientele \n │ \n │ \" Use my trend awareness to assist customers in their shopping experience \n │ \n │ \" Thoroughly scan every piece of merchandise for inventory control \n │ \n │ \" Process shipment to increase my product knowledge \n │ \n │ PLANET BEACH Spa Consultant City, State Aug. 2008 - present \n │ \n │ \" Sell retail and memberships to meet company sales goals \n │ \n │ \" Build organizational skills by single handedly running all operating procedures \n │ \n │ \" Communicate with clients to fulfill their wants and needs \n │ \n │ \" Attend promotional events to market our services \n │ \n │ \" Handle cash and deposits during opening and closing \n │ \n │ \" Received employee of the month award twice \n │ \n │ HEARTBREAKER Sales Associate City, State May 2008 - Aug. 2008 \n │ \n │ · Stocked sales floor with fast fashion inventory \n │ \n │ · Marked down items allowing me to see unsuccessful merchandise in a retail market \n │ \n │ \" Offered advice and assistance to each guest \n │ \n │ VICTORIA'S SECRET Fashion Representative City, State Jan. 2006 - Feb. 2009 \n │ \n │ \" Applied my leadership skills by assisting in the training of coworkers \n │ \n │ \" Set up mannequins and displays in order to entice future customers \n │ \n │ · Provided superior customer service by helping with consumer decisions \n │ \n │ \" Took seasonal inventory \n │ \n │ VOLUNTEER EXPERIENCE: \n │ \n │ TARGET CORPORATION Brand Ambassador \n │ \n │ City, State August 2009 \n │ \n │ \" Represented Periscope Marketing and Target Inc. at a college event \n │ \n │ \" Engaged University of Minnesota freshman in the Target brand experience \n", + "data_html": "
text_and_imagespage_view
text
text# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n" Bachelor of Science in Graphic Design\n\n" Cumulative GPA 3.93, Dean's List\n\n" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n" Use my trend awareness to assist customers in their shopping experience\n\n" Thoroughly scan every piece of merchandise for inventory control\n\n" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n" Sell retail and memberships to meet company sales goals\n\n" Build organizational skills by single handedly running all operating procedures\n\n" Communicate with clients to fulfill their wants and needs\n\n" Attend promotional events to market our services\n\n" Handle cash and deposits during opening and closing\n\n" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n" Applied my leadership skills by assisting in the training of coworkers\n\n" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n" Represented Periscope Marketing and Target Inc. at a college event\n\n" Engaged University of Minnesota freshman in the Target brand experience\n
images
None
", + "extra": {} + } + ], + "outputs": [ + { + "name": "candidate_profile", + "concept": "CandidateProfile", + "content_type": null, + "preview": null, + "size": null, + "digest": "6CXVY", + "data": { + "skills": "Graphic design, trend awareness, customer service, inventory management, display and visual merchandising, sales, communication, organizational skills, leadership, cash handling, promotional marketing.", + "experience": "Sales Associate at American Eagle (July 2009 - present): Collaborated with store merchandiser on displays, assisted customers using trend knowledge, managed inventory scanning, and processed shipments. Spa Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, managed daily operations, communicated with clients, participated in promotional events, handled cash. Sales Associate at Heartbreaker (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assisted customers. Fashion Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set up mannequins and displays, provided customer service, conducted seasonal inventory. Volunteer Brand Ambassador at Target Corporation (August 2009): Represented Target and Periscope Marketing, engaged university students.", + "education": "Bachelor of Science in Graphic Design from the University of Minnesota, College of Design. Cumulative GPA: 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated May 2011.", + "achievements": "Recipient of the Twin Cities Iron Range Scholarship, Dean's List honoree, Employee of the Month award (twice) at Planet Beach, participated in college brand promotion event for Target." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n skills │ Graphic design, trend awareness, customer service, inventory management, display and\n │ sales, communication, organizational skills, leadership, cash handling, promotional \n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n experience │ Sales Associate at American Eagle (July 2009 - present): Collaborated with store mer\n │ assisted customers using trend knowledge, managed inventory scanning, and processed \n │ Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, manag\n │ communicated with clients, participated in promotional events, handled cash. Sales A\n │ (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assi\n │ Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set \n │ displays, provided customer service, conducted seasonal inventory. Volunteer Brand A\n │ Corporation (August 2009): Represented Target and Periscope Marketing, engaged unive\n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n education │ Bachelor of Science in Graphic Design from the University of Minnesota, College of D\n │ 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated Ma\n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n achievements │ Recipient of the Twin Cities Iron Range Scholarship, Dean's List honoree, Employee o\n │ (twice) at Planet Beach, participated in college brand promotion event for Target. \n", + "data_html": "
skillsGraphic design, trend awareness, customer service, inventory management, display and visual merchandising, sales, communication, organizational skills, leadership, cash handling, promotional marketing.
experienceSales Associate at American Eagle (July 2009 - present): Collaborated with store merchandiser on displays, assisted customers using trend knowledge, managed inventory scanning, and processed shipments. Spa Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, managed daily operations, communicated with clients, participated in promotional events, handled cash. Sales Associate at Heartbreaker (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assisted customers. Fashion Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set up mannequins and displays, provided customer service, conducted seasonal inventory. Volunteer Brand Ambassador at Target Corporation (August 2009): Represented Target and Periscope Marketing, engaged university students.
educationBachelor of Science in Graphic Design from the University of Minnesota, College of Design. Cumulative GPA: 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated May 2011.
achievementsRecipient of the Twin Cities Iron Range Scholarship, Dean's List honoree, Employee of the Month award (twice) at Planet Beach, participated in college brand promotion event for Target.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_9", + "kind": "operator", + "pipe_code": "analyze_cv", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:38.098562Z", + "ended_at": "2026-01-09T15:12:54.719123Z", + "duration_ms": 16620 + }, + "io": { + "inputs": [ + { + "name": "cv_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "NoP6c", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n\" Bachelor of Science in Graphic Design\n\n\" Cumulative GPA 3.93, Dean's List\n\n\" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n\" Use my trend awareness to assist customers in their shopping experience\n\n\" Thoroughly scan every piece of merchandise for inventory control\n\n\" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n\" Sell retail and memberships to meet company sales goals\n\n\" Build organizational skills by single handedly running all operating procedures\n\n\" Communicate with clients to fulfill their wants and needs\n\n\" Attend promotional events to market our services\n\n\" Handle cash and deposits during opening and closing\n\n\" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n\" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n\" Applied my leadership skills by assisting in the training of coworkers\n\n\" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n\" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n\" Represented Periscope Marketing and Target Inc. at a college event\n\n\" Engaged University of Minnesota freshman in the Target brand experience\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ JOHN DOE \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ \n │ Full Address . City, State, ZIP . Phone Number . E-mail \n │ \n │ OBJECTIVE: Design apparel print for an innovative retail company \n │ \n │ EDUCATION: \n │ \n │ UNIVERSITY OF MINNESOTA College of Design \" Bachelor of Science in Graphic Design \n │ \n │ \" Cumulative GPA 3.93, Dean's List \n │ \n │ \" Twin cities Iron Range Scholarship \n │ \n │ City, State May 2011 \n │ \n │ WORK EXPERIENCE: \n │ \n │ AMERICAN EAGLE Sales Associate \n │ \n │ City, State July 2009 - present \n │ \n │ · Collaborated with the store merchandiser creating displays to attract clientele \n │ \n │ \" Use my trend awareness to assist customers in their shopping experience \n │ \n │ \" Thoroughly scan every piece of merchandise for inventory control \n │ \n │ \" Process shipment to increase my product knowledge \n │ \n │ PLANET BEACH Spa Consultant City, State Aug. 2008 - present \n │ \n │ \" Sell retail and memberships to meet company sales goals \n │ \n │ \" Build organizational skills by single handedly running all operating procedures \n │ \n │ \" Communicate with clients to fulfill their wants and needs \n │ \n │ \" Attend promotional events to market our services \n │ \n │ \" Handle cash and deposits during opening and closing \n │ \n │ \" Received employee of the month award twice \n │ \n │ HEARTBREAKER Sales Associate City, State May 2008 - Aug. 2008 \n │ \n │ · Stocked sales floor with fast fashion inventory \n │ \n │ · Marked down items allowing me to see unsuccessful merchandise in a retail market \n │ \n │ \" Offered advice and assistance to each guest \n │ \n │ VICTORIA'S SECRET Fashion Representative City, State Jan. 2006 - Feb. 2009 \n │ \n │ \" Applied my leadership skills by assisting in the training of coworkers \n │ \n │ \" Set up mannequins and displays in order to entice future customers \n │ \n │ · Provided superior customer service by helping with consumer decisions \n │ \n │ \" Took seasonal inventory \n │ \n │ VOLUNTEER EXPERIENCE: \n │ \n │ TARGET CORPORATION Brand Ambassador \n │ \n │ City, State August 2009 \n │ \n │ \" Represented Periscope Marketing and Target Inc. at a college event \n │ \n │ \" Engaged University of Minnesota freshman in the Target brand experience \n", + "data_html": "
text_and_imagespage_view
text
text# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n" Bachelor of Science in Graphic Design\n\n" Cumulative GPA 3.93, Dean's List\n\n" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n" Use my trend awareness to assist customers in their shopping experience\n\n" Thoroughly scan every piece of merchandise for inventory control\n\n" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n" Sell retail and memberships to meet company sales goals\n\n" Build organizational skills by single handedly running all operating procedures\n\n" Communicate with clients to fulfill their wants and needs\n\n" Attend promotional events to market our services\n\n" Handle cash and deposits during opening and closing\n\n" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n" Applied my leadership skills by assisting in the training of coworkers\n\n" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n" Represented Periscope Marketing and Target Inc. at a college event\n\n" Engaged University of Minnesota freshman in the Target brand experience\n
images
None
", + "extra": {} + } + ], + "outputs": [ + { + "name": "candidate_profile", + "concept": "CandidateProfile", + "content_type": null, + "preview": null, + "size": null, + "digest": "PYKfy", + "data": { + "skills": "Graphic design, trend awareness, customer service, inventory management, display and visual merchandising, sales, communication, organizational skills, leadership, cash handling, promotional marketing.", + "experience": "Sales Associate at American Eagle (July 2009 - present): Collaborated with merchandiser on displays, assisted customers using trend knowledge, managed inventory scanning, and processed shipments. Spa Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, managed daily operations, communicated with clients, participated in promotional events, handled cash. Sales Associate at Heartbreaker (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assisted customers. Fashion Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set up mannequins and displays, provided customer service, conducted seasonal inventory. Volunteer Brand Ambassador at Target Corporation (August 2009): Represented Target and Periscope Marketing, engaged university students.", + "education": "Bachelor of Science in Graphic Design from the University of Minnesota, College of Design. Cumulative GPA: 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated May 2011.", + "achievements": "Dean's List recognition, Twin Cities Iron Range Scholarship recipient, Employee of the Month award (twice) at Planet Beach, successful representation of Target as a Brand Ambassador at a college event." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n skills │ Graphic design, trend awareness, customer service, inventory management, display and\n │ sales, communication, organizational skills, leadership, cash handling, promotional \n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n experience │ Sales Associate at American Eagle (July 2009 - present): Collaborated with merchandi\n │ assisted customers using trend knowledge, managed inventory scanning, and processed \n │ Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, manag\n │ communicated with clients, participated in promotional events, handled cash. Sales A\n │ (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assi\n │ Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set \n │ displays, provided customer service, conducted seasonal inventory. Volunteer Brand A\n │ Corporation (August 2009): Represented Target and Periscope Marketing, engaged unive\n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n education │ Bachelor of Science in Graphic Design from the University of Minnesota, College of D\n │ 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated Ma\n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n achievements │ Dean's List recognition, Twin Cities Iron Range Scholarship recipient, Employee of t\n │ at Planet Beach, successful representation of Target as a Brand Ambassador at a coll\n", + "data_html": "
skillsGraphic design, trend awareness, customer service, inventory management, display and visual merchandising, sales, communication, organizational skills, leadership, cash handling, promotional marketing.
experienceSales Associate at American Eagle (July 2009 - present): Collaborated with merchandiser on displays, assisted customers using trend knowledge, managed inventory scanning, and processed shipments. Spa Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, managed daily operations, communicated with clients, participated in promotional events, handled cash. Sales Associate at Heartbreaker (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assisted customers. Fashion Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set up mannequins and displays, provided customer service, conducted seasonal inventory. Volunteer Brand Ambassador at Target Corporation (August 2009): Represented Target and Periscope Marketing, engaged university students.
educationBachelor of Science in Graphic Design from the University of Minnesota, College of Design. Cumulative GPA: 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated May 2011.
achievementsDean's List recognition, Twin Cities Iron Range Scholarship recipient, Employee of the Month award (twice) at Planet Beach, successful representation of Target as a Brand Ambassador at a college event.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_10", + "kind": "operator", + "pipe_code": "analyze_match", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:43.866619Z", + "ended_at": "2026-01-09T15:12:50.385590Z", + "duration_ms": 6518 + }, + "io": { + "inputs": [ + { + "name": "candidate_profile", + "concept": "CandidateProfile", + "content_type": null, + "preview": null, + "size": null, + "digest": "6CXVY", + "data": { + "skills": "Graphic design, trend awareness, customer service, inventory management, display and visual merchandising, sales, communication, organizational skills, leadership, cash handling, promotional marketing.", + "experience": "Sales Associate at American Eagle (July 2009 - present): Collaborated with store merchandiser on displays, assisted customers using trend knowledge, managed inventory scanning, and processed shipments. Spa Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, managed daily operations, communicated with clients, participated in promotional events, handled cash. Sales Associate at Heartbreaker (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assisted customers. Fashion Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set up mannequins and displays, provided customer service, conducted seasonal inventory. Volunteer Brand Ambassador at Target Corporation (August 2009): Represented Target and Periscope Marketing, engaged university students.", + "education": "Bachelor of Science in Graphic Design from the University of Minnesota, College of Design. Cumulative GPA: 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated May 2011.", + "achievements": "Recipient of the Twin Cities Iron Range Scholarship, Dean's List honoree, Employee of the Month award (twice) at Planet Beach, participated in college brand promotion event for Target." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n skills │ Graphic design, trend awareness, customer service, inventory management, display and\n │ sales, communication, organizational skills, leadership, cash handling, promotional \n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n experience │ Sales Associate at American Eagle (July 2009 - present): Collaborated with store mer\n │ assisted customers using trend knowledge, managed inventory scanning, and processed \n │ Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, manag\n │ communicated with clients, participated in promotional events, handled cash. Sales A\n │ (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assi\n │ Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set \n │ displays, provided customer service, conducted seasonal inventory. Volunteer Brand A\n │ Corporation (August 2009): Represented Target and Periscope Marketing, engaged unive\n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n education │ Bachelor of Science in Graphic Design from the University of Minnesota, College of D\n │ 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated Ma\n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n achievements │ Recipient of the Twin Cities Iron Range Scholarship, Dean's List honoree, Employee o\n │ (twice) at Planet Beach, participated in college brand promotion event for Target. \n", + "data_html": "
skillsGraphic design, trend awareness, customer service, inventory management, display and visual merchandising, sales, communication, organizational skills, leadership, cash handling, promotional marketing.
experienceSales Associate at American Eagle (July 2009 - present): Collaborated with store merchandiser on displays, assisted customers using trend knowledge, managed inventory scanning, and processed shipments. Spa Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, managed daily operations, communicated with clients, participated in promotional events, handled cash. Sales Associate at Heartbreaker (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assisted customers. Fashion Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set up mannequins and displays, provided customer service, conducted seasonal inventory. Volunteer Brand Ambassador at Target Corporation (August 2009): Represented Target and Periscope Marketing, engaged university students.
educationBachelor of Science in Graphic Design from the University of Minnesota, College of Design. Cumulative GPA: 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated May 2011.
achievementsRecipient of the Twin Cities Iron Range Scholarship, Dean's List honoree, Employee of the Month award (twice) at Planet Beach, participated in college brand promotion event for Target.
", + "extra": {} + }, + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "Wp2W2", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises; strong executive presence with ability to engage C-suite buyers.", + "responsibilities": "Lead and scale a team of 60+ enterprise sales professionals; drive revenue with ownership of $180M+ ARR and full P&L accountability; develop and implement sales strategies; build executive relationships with C-level stakeholders; ensure sales excellence through forecasting and process optimization; coach and develop sales leaders; collaborate cross-functionally with Product, Marketing, Customer Success, and Channel teams; champion innovation in sales methodologies and tools.", + "qualifications": "12+ years of relevant experience; bachelor's degree required; MBA preferred.", + "nice_to_haves": "Experience in CRM, cloud infrastructure, or enterprise software markets; track record of building sales teams from early stage through scale; expertise in account-based selling and strategic account management; strong analytical skills with proficiency in ACME and sales analytics tools; history of developing talent with direct reports promoted to leadership roles; experience with channel/partner sales models; passion for coaching and developing high-performing teams; leadership competencies in strategic thinking, communication, data-driven decision making, change management, cross-functional collaboration, and diversity, equity, and inclusion advocacy." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises; strong executive p\n │ engage C-suite buyers. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and scale a team of 60+ enterprise sales professionals; drive revenue with \n │ and full P&L accountability; develop and implement sales strategies; build execu\n │ C-level stakeholders; ensure sales excellence through forecasting and process op\n │ develop sales leaders; collaborate cross-functionally with Product, Marketing, C\n │ Channel teams; champion innovation in sales methodologies and tools. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of relevant experience; bachelor's degree required; MBA preferred. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n nice_to_haves │ Experience in CRM, cloud infrastructure, or enterprise software markets; track r\n │ teams from early stage through scale; expertise in account-based selling and str\n │ management; strong analytical skills with proficiency in ACME and sales analytic\n │ developing talent with direct reports promoted to leadership roles; experience w\n │ sales models; passion for coaching and developing high-performing teams; leaders\n │ strategic thinking, communication, data-driven decision making, change managemen\n │ collaboration, and diversity, equity, and inclusion advocacy. \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises; strong executive presence with ability to engage C-suite buyers.
responsibilitiesLead and scale a team of 60+ enterprise sales professionals; drive revenue with ownership of $180M+ ARR and full P&L accountability; develop and implement sales strategies; build executive relationships with C-level stakeholders; ensure sales excellence through forecasting and process optimization; coach and develop sales leaders; collaborate cross-functionally with Product, Marketing, Customer Success, and Channel teams; champion innovation in sales methodologies and tools.
qualifications12+ years of relevant experience; bachelor's degree required; MBA preferred.
nice_to_havesExperience in CRM, cloud infrastructure, or enterprise software markets; track record of building sales teams from early stage through scale; expertise in account-based selling and strategic account management; strong analytical skills with proficiency in ACME and sales analytics tools; history of developing talent with direct reports promoted to leadership roles; experience with channel/partner sales models; passion for coaching and developing high-performing teams; leadership competencies in strategic thinking, communication, data-driven decision making, change management, cross-functional collaboration, and diversity, equity, and inclusion advocacy.
", + "extra": {} + } + ], + "outputs": [ + { + "name": "match_analysis", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "CjbDQ-branch-1", + "data": { + "match_score": 28.0, + "strengths": "The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of performance excellence, including Employee of the Month awards. They possess leadership experience through training coworkers and managing daily operations, as well as organizational and promotional marketing skills. Their educational background in Graphic Design from a reputable program, with a high GPA and scholarship recognition, indicates discipline and visual-strategic thinking, which could support marketing or client-facing presentation elements in sales roles.", + "gaps": "The candidate lacks any direct experience in SaaS, enterprise software, or cloud infrastructure sales, which are central to the role. They have no demonstrated experience selling to Fortune 500 companies or engaging C-suite executives. Their sales background is in retail and spa services, not in high-value B2B or enterprise sales. There is no evidence of leading or scaling a large sales team (60+), P&L or ARR ownership, strategic sales planning, or experience with sales analytics tools like ACME. The candidate’s experience level appears significantly below the 12+ years of relevant enterprise sales leadership required, and there is no indication of an MBA or executive-level strategic competencies such as change management, cross-functional collaboration at scale, or channel/partner sales models.", + "overall_assessment": "While the candidate exhibits strong foundational sales and customer service abilities, along with leadership in retail contexts, they are not a suitable match for this senior enterprise sales leadership role. The position demands extensive experience in SaaS and enterprise sales leadership at a strategic level, which the candidate does not possess. Their background is better aligned with retail sales management or visual merchandising roles rather than scaling a $180M+ ARR business unit." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n match_score │ 28.0 \n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n strengths │ The candidate demonstrates strong customer service, communication, and sales e\n │ environments, with a consistent record of performance excellence, including Em\n │ awards. They possess leadership experience through training coworkers and mana\n │ as well as organizational and promotional marketing skills. Their educational \n │ Design from a reputable program, with a high GPA and scholarship recognition, \n │ visual-strategic thinking, which could support marketing or client-facing pres\n │ sales roles. \n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n gaps │ The candidate lacks any direct experience in SaaS, enterprise software, or clo\n │ which are central to the role. They have no demonstrated experience selling to\n │ or engaging C-suite executives. Their sales background is in retail and spa se\n │ high-value B2B or enterprise sales. There is no evidence of leading or scaling\n │ (60+), P&L or ARR ownership, strategic sales planning, or experience with sale\n │ ACME. The candidate’s experience level appears significantly below the 12+ yea\n │ enterprise sales leadership required, and there is no indication of an MBA or \n │ strategic competencies such as change management, cross-functional collaborati\n │ channel/partner sales models. \n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n overall_assessment │ While the candidate exhibits strong foundational sales and customer service ab\n │ leadership in retail contexts, they are not a suitable match for this senior e\n │ leadership role. The position demands extensive experience in SaaS and enterpr\n │ a strategic level, which the candidate does not possess. Their background is b\n │ retail sales management or visual merchandising roles rather than scaling a $1\n", + "data_html": "
match_score28.0
strengthsThe candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of performance excellence, including Employee of the Month awards. They possess leadership experience through training coworkers and managing daily operations, as well as organizational and promotional marketing skills. Their educational background in Graphic Design from a reputable program, with a high GPA and scholarship recognition, indicates discipline and visual-strategic thinking, which could support marketing or client-facing presentation elements in sales roles.
gapsThe candidate lacks any direct experience in SaaS, enterprise software, or cloud infrastructure sales, which are central to the role. They have no demonstrated experience selling to Fortune 500 companies or engaging C-suite executives. Their sales background is in retail and spa services, not in high-value B2B or enterprise sales. There is no evidence of leading or scaling a large sales team (60+), P&L or ARR ownership, strategic sales planning, or experience with sales analytics tools like ACME. The candidate’s experience level appears significantly below the 12+ years of relevant enterprise sales leadership required, and there is no indication of an MBA or executive-level strategic competencies such as change management, cross-functional collaboration at scale, or channel/partner sales models.
overall_assessmentWhile the candidate exhibits strong foundational sales and customer service abilities, along with leadership in retail contexts, they are not a suitable match for this senior enterprise sales leadership role. The position demands extensive experience in SaaS and enterprise sales leadership at a strategic level, which the candidate does not possess. Their background is better aligned with retail sales management or visual merchandising roles rather than scaling a $180M+ ARR business unit.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:node_11", + "kind": "operator", + "pipe_code": "analyze_match", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:12:54.720955Z", + "ended_at": "2026-01-09T15:13:00.882764Z", + "duration_ms": 6161 + }, + "io": { + "inputs": [ + { + "name": "candidate_profile", + "concept": "CandidateProfile", + "content_type": null, + "preview": null, + "size": null, + "digest": "PYKfy", + "data": { + "skills": "Graphic design, trend awareness, customer service, inventory management, display and visual merchandising, sales, communication, organizational skills, leadership, cash handling, promotional marketing.", + "experience": "Sales Associate at American Eagle (July 2009 - present): Collaborated with merchandiser on displays, assisted customers using trend knowledge, managed inventory scanning, and processed shipments. Spa Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, managed daily operations, communicated with clients, participated in promotional events, handled cash. Sales Associate at Heartbreaker (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assisted customers. Fashion Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set up mannequins and displays, provided customer service, conducted seasonal inventory. Volunteer Brand Ambassador at Target Corporation (August 2009): Represented Target and Periscope Marketing, engaged university students.", + "education": "Bachelor of Science in Graphic Design from the University of Minnesota, College of Design. Cumulative GPA: 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated May 2011.", + "achievements": "Dean's List recognition, Twin Cities Iron Range Scholarship recipient, Employee of the Month award (twice) at Planet Beach, successful representation of Target as a Brand Ambassador at a college event." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n skills │ Graphic design, trend awareness, customer service, inventory management, display and\n │ sales, communication, organizational skills, leadership, cash handling, promotional \n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n experience │ Sales Associate at American Eagle (July 2009 - present): Collaborated with merchandi\n │ assisted customers using trend knowledge, managed inventory scanning, and processed \n │ Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, manag\n │ communicated with clients, participated in promotional events, handled cash. Sales A\n │ (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assi\n │ Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set \n │ displays, provided customer service, conducted seasonal inventory. Volunteer Brand A\n │ Corporation (August 2009): Represented Target and Periscope Marketing, engaged unive\n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n education │ Bachelor of Science in Graphic Design from the University of Minnesota, College of D\n │ 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated Ma\n──────────────┼─────────────────────────────────────────────────────────────────────────────────────\n achievements │ Dean's List recognition, Twin Cities Iron Range Scholarship recipient, Employee of t\n │ at Planet Beach, successful representation of Target as a Brand Ambassador at a coll\n", + "data_html": "
skillsGraphic design, trend awareness, customer service, inventory management, display and visual merchandising, sales, communication, organizational skills, leadership, cash handling, promotional marketing.
experienceSales Associate at American Eagle (July 2009 - present): Collaborated with merchandiser on displays, assisted customers using trend knowledge, managed inventory scanning, and processed shipments. Spa Consultant at Planet Beach (Aug. 2008 - present): Sold retail and memberships, managed daily operations, communicated with clients, participated in promotional events, handled cash. Sales Associate at Heartbreaker (May 2008 - Aug. 2008): Stocked inventory, identified unsuccessful merchandise, assisted customers. Fashion Representative at Victoria's Secret (Jan. 2006 - Feb. 2009): Trained coworkers, set up mannequins and displays, provided customer service, conducted seasonal inventory. Volunteer Brand Ambassador at Target Corporation (August 2009): Represented Target and Periscope Marketing, engaged university students.
educationBachelor of Science in Graphic Design from the University of Minnesota, College of Design. Cumulative GPA: 3.93, Dean's List, recipient of the Twin Cities Iron Range Scholarship. Graduated May 2011.
achievementsDean's List recognition, Twin Cities Iron Range Scholarship recipient, Employee of the Month award (twice) at Planet Beach, successful representation of Target as a Brand Ambassador at a college event.
", + "extra": {} + }, + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "Wp2W2", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises; strong executive presence with ability to engage C-suite buyers.", + "responsibilities": "Lead and scale a team of 60+ enterprise sales professionals; drive revenue with ownership of $180M+ ARR and full P&L accountability; develop and implement sales strategies; build executive relationships with C-level stakeholders; ensure sales excellence through forecasting and process optimization; coach and develop sales leaders; collaborate cross-functionally with Product, Marketing, Customer Success, and Channel teams; champion innovation in sales methodologies and tools.", + "qualifications": "12+ years of relevant experience; bachelor's degree required; MBA preferred.", + "nice_to_haves": "Experience in CRM, cloud infrastructure, or enterprise software markets; track record of building sales teams from early stage through scale; expertise in account-based selling and strategic account management; strong analytical skills with proficiency in ACME and sales analytics tools; history of developing talent with direct reports promoted to leadership roles; experience with channel/partner sales models; passion for coaching and developing high-performing teams; leadership competencies in strategic thinking, communication, data-driven decision making, change management, cross-functional collaboration, and diversity, equity, and inclusion advocacy." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises; strong executive p\n │ engage C-suite buyers. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and scale a team of 60+ enterprise sales professionals; drive revenue with \n │ and full P&L accountability; develop and implement sales strategies; build execu\n │ C-level stakeholders; ensure sales excellence through forecasting and process op\n │ develop sales leaders; collaborate cross-functionally with Product, Marketing, C\n │ Channel teams; champion innovation in sales methodologies and tools. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of relevant experience; bachelor's degree required; MBA preferred. \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n nice_to_haves │ Experience in CRM, cloud infrastructure, or enterprise software markets; track r\n │ teams from early stage through scale; expertise in account-based selling and str\n │ management; strong analytical skills with proficiency in ACME and sales analytic\n │ developing talent with direct reports promoted to leadership roles; experience w\n │ sales models; passion for coaching and developing high-performing teams; leaders\n │ strategic thinking, communication, data-driven decision making, change managemen\n │ collaboration, and diversity, equity, and inclusion advocacy. \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises; strong executive presence with ability to engage C-suite buyers.
responsibilitiesLead and scale a team of 60+ enterprise sales professionals; drive revenue with ownership of $180M+ ARR and full P&L accountability; develop and implement sales strategies; build executive relationships with C-level stakeholders; ensure sales excellence through forecasting and process optimization; coach and develop sales leaders; collaborate cross-functionally with Product, Marketing, Customer Success, and Channel teams; champion innovation in sales methodologies and tools.
qualifications12+ years of relevant experience; bachelor's degree required; MBA preferred.
nice_to_havesExperience in CRM, cloud infrastructure, or enterprise software markets; track record of building sales teams from early stage through scale; expertise in account-based selling and strategic account management; strong analytical skills with proficiency in ACME and sales analytics tools; history of developing talent with direct reports promoted to leadership roles; experience with channel/partner sales models; passion for coaching and developing high-performing teams; leadership competencies in strategic thinking, communication, data-driven decision making, change management, cross-functional collaboration, and diversity, equity, and inclusion advocacy.
", + "extra": {} + } + ], + "outputs": [ + { + "name": "match_analysis", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "CjbDQ-branch-0", + "data": { + "match_score": 28.0, + "strengths": "The candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of client engagement, promotional marketing, and team collaboration. They have hands-on experience in visual merchandising, inventory management, and training or leading peers, supported by recognition such as Employee of the Month and academic honors. Their Bachelor of Science in Graphic Design and practical trend awareness indicate creativity and brand-consciousness, while their volunteer role as a Brand Ambassador shows initiative in representing a major corporation on campus.", + "gaps": "The candidate lacks any direct experience in SaaS sales, enterprise software, or cloud infrastructure, and has no demonstrated track record of selling to Fortune 500 companies or engaging C-suite executives. They do not meet the 12+ years of relevant experience requirement, particularly in high-scale revenue ownership ($180M+ ARR) or P&L management. There is no evidence of leading large sales teams (60+ members), strategic sales planning, or using advanced sales analytics tools like ACME. Additionally, the candidate has not shown experience in CRM platforms, account-based selling, channel/partner sales, or cross-functional leadership with Product or Customer Success teams.", + "overall_assessment": "While the candidate exhibits solid foundational skills in sales, customer service, and visual presentation within retail and spa environments, they are not a suitable fit for this senior enterprise sales leadership role. The position demands extensive experience in technology sales at scale, executive engagement, and team leadership far beyond the candidate's current background. Their qualifications align better with retail or consumer-facing sales roles rather than B2B SaaS and enterprise sales leadership." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n match_score │ 28.0 \n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n strengths │ The candidate demonstrates strong customer service, communication, and sales e\n │ environments, with a consistent record of client engagement, promotional marke\n │ collaboration. They have hands-on experience in visual merchandising, inventor\n │ training or leading peers, supported by recognition such as Employee of the Mo\n │ Their Bachelor of Science in Graphic Design and practical trend awareness indi\n │ brand-consciousness, while their volunteer role as a Brand Ambassador shows in\n │ a major corporation on campus. \n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n gaps │ The candidate lacks any direct experience in SaaS sales, enterprise software, \n │ and has no demonstrated track record of selling to Fortune 500 companies or en\n │ executives. They do not meet the 12+ years of relevant experience requirement,\n │ high-scale revenue ownership ($180M+ ARR) or P&L management. There is no evide\n │ sales teams (60+ members), strategic sales planning, or using advanced sales a\n │ ACME. Additionally, the candidate has not shown experience in CRM platforms, a\n │ channel/partner sales, or cross-functional leadership with Product or Customer\n────────────────────┼───────────────────────────────────────────────────────────────────────────────\n overall_assessment │ While the candidate exhibits solid foundational skills in sales, customer serv\n │ presentation within retail and spa environments, they are not a suitable fit f\n │ enterprise sales leadership role. The position demands extensive experience in\n │ scale, executive engagement, and team leadership far beyond the candidate's cu\n │ qualifications align better with retail or consumer-facing sales roles rather \n │ enterprise sales leadership. \n", + "data_html": "
match_score28.0
strengthsThe candidate demonstrates strong customer service, communication, and sales experience across retail environments, with a consistent record of client engagement, promotional marketing, and team collaboration. They have hands-on experience in visual merchandising, inventory management, and training or leading peers, supported by recognition such as Employee of the Month and academic honors. Their Bachelor of Science in Graphic Design and practical trend awareness indicate creativity and brand-consciousness, while their volunteer role as a Brand Ambassador shows initiative in representing a major corporation on campus.
gapsThe candidate lacks any direct experience in SaaS sales, enterprise software, or cloud infrastructure, and has no demonstrated track record of selling to Fortune 500 companies or engaging C-suite executives. They do not meet the 12+ years of relevant experience requirement, particularly in high-scale revenue ownership ($180M+ ARR) or P&L management. There is no evidence of leading large sales teams (60+ members), strategic sales planning, or using advanced sales analytics tools like ACME. Additionally, the candidate has not shown experience in CRM platforms, account-based selling, channel/partner sales, or cross-functional leadership with Product or Customer Success teams.
overall_assessmentWhile the candidate exhibits solid foundational skills in sales, customer service, and visual presentation within retail and spa environments, they are not a suitable fit for this senior enterprise sales leadership role. The position demands extensive experience in technology sales at scale, executive engagement, and team leadership far beyond the candidate's current background. Their qualifications align better with retail or consumer-facing sales roles rather than B2B SaaS and enterprise sales leadership.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + } + ], + "edges": [ + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_0", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_0", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_1", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_1", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_0", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_2", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_2", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_0", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_3", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_3", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_3", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_4", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_4", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_4", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_5", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_5", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_3", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_6", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_6", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_6", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_7", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_7", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_6", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_8", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_8", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_4", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_9", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_9", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_6", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_10", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_10", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_4", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_11", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_11", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_1", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_2", + "kind": "data", + "label": "job_offer_pages", + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_12", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_2", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_4", + "kind": "data", + "label": "job_requirements", + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_13", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_2", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_6", + "kind": "data", + "label": "job_requirements", + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_14", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_7", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_8", + "kind": "data", + "label": "cv_pages", + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_15", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_5", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_9", + "kind": "data", + "label": "cv_pages", + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_16", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_8", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_10", + "kind": "data", + "label": "candidate_profile", + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_17", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_2", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_10", + "kind": "data", + "label": "job_requirements", + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_18", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_9", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_11", + "kind": "data", + "label": "candidate_profile", + "meta": {} + }, + { + "id": "99c87409-4150-4c21-9135-831873dc0c5f:edge_19", + "source": "99c87409-4150-4c21-9135-831873dc0c5f:node_2", + "target": "99c87409-4150-4c21-9135-831873dc0c5f:node_11", + "kind": "data", + "label": "job_requirements", + "meta": {} + } + ], + "meta": {} +} \ No newline at end of file diff --git a/examples/cv_batch/inputs.json b/examples/cv_batch/inputs.json new file mode 100644 index 0000000..ebb02f8 --- /dev/null +++ b/examples/cv_batch/inputs.json @@ -0,0 +1,19 @@ +{ + "cvs": { + "concept": "native.Document", + "content": [ + { + "url": "data/CVx5/CV-01.pdf" + }, + { + "url": "data/CVx5/CV-02.pdf" + } + ] + }, + "job_offer_pdf": { + "concept": "native.Document", + "content": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + } + } +} \ No newline at end of file diff --git a/examples/cv_batch/mermaidflow.html b/examples/cv_batch/mermaidflow.html new file mode 100644 index 0000000..fde29d9 --- /dev/null +++ b/examples/cv_batch/mermaidflow.html @@ -0,0 +1,830 @@ + + + + + +Pipeline: Batch Analyze Cvs For Job Offer + + + + + + +
+

Pipeline: Batch Analyze Cvs For Job Offer

+
+ + +
+
+
+
+
+

Click on data nodes (rounded pills) to view their full content

+ +
+
+ Data Content + × +
+
+
+ + + +
+
+ + + +
+
+ +
+ + + + \ No newline at end of file diff --git a/examples/cv_batch/reactflow.html b/examples/cv_batch/reactflow.html new file mode 100644 index 0000000..3b8e6a1 --- /dev/null +++ b/examples/cv_batch/reactflow.html @@ -0,0 +1,4045 @@ + + + + + +Pipeline: Batch Analyze Cvs For Job Offer + + + + + + + + + + + + + + + + + +
+
+
+ + + Pipeline: Batch Analyze Cvs For Job Offer +
+ +
+
+
+ +
+
+
+
+
Node Details
+
+
+ × +
+
+
+ +
Click on nodes to view details
+ + +
+
+
+
Data
+
Data Item
+
+
+ + +
+
+
+
+
+ + + +
+
+
+
+ +
+ + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/examples/cv_batch/run_analyze_cv_and_generate_questions.py b/examples/cv_batch/run_analyze_cv_and_generate_questions.py new file mode 100644 index 0000000..fff77b2 --- /dev/null +++ b/examples/cv_batch/run_analyze_cv_and_generate_questions.py @@ -0,0 +1,39 @@ +import asyncio +import time +from pathlib import Path + +from pipelex.core.stuffs.document_content import DocumentContent +from pipelex.core.stuffs.list_content import ListContent +from pipelex.pipelex import Pipelex +from pipelex.pipeline.execute import execute_pipeline +from pipelex.system.runtime import IntegrationMode + +# CV_FOLDER = Path("data/CVs") +# CV_FOLDER = Path("data/OneCV") +CV_FOLDER = Path("data/CVx5") + + +def get_cv_pdf_contents() -> list[DocumentContent]: + """Get all PDF files from the CVs folder.""" + return [DocumentContent(url=str(pdf_path)) for pdf_path in sorted(CV_FOLDER.glob("*.pdf"))] + + +async def run_analyze_cvs_for_job_offer(): + return await execute_pipeline( + pipe_code="analyze_cvs_for_job_offer", + inputs={ + "cvs": ListContent[DocumentContent](items=get_cv_pdf_contents()), + "job_offer_pdf": DocumentContent(url="https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf"), + }, + ) + + +if __name__ == "__main__": + # Initialize Pipelex + with Pipelex.make(library_dirs=["examples/cv_batch"], integration_mode=IntegrationMode.CLI) as pipelex: + # Run the pipeline with timing + start_time = time.perf_counter() + result = asyncio.run(run_analyze_cvs_for_job_offer()) + elapsed_time = time.perf_counter() - start_time + + print(f"\n⏱️ Pipeline execution time: {elapsed_time:.2f} seconds") diff --git a/hidden/cv_and_offer/__init__.py b/hidden/cv_and_offer/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/hidden/cv_and_offer/__init__.py @@ -0,0 +1 @@ + diff --git a/hidden/cv_and_offer/cv_job_match.plx b/hidden/cv_and_offer/cv_job_match.plx new file mode 100644 index 0000000..ec55ee2 --- /dev/null +++ b/hidden/cv_and_offer/cv_job_match.plx @@ -0,0 +1,162 @@ +domain = "cv_and_offer" +description = "Analyzing CV and job offer compatibility and generating interview questions" +main_pipe = "cv_job_match" + +[concept] +CVAnalysis = "Structured analysis of a candidate's curriculum vitae highlighting their professional profile." +JobRequirements = "Structured analysis of a job offer detailing what the employer is seeking." +MatchAnalysis = "Evaluation of how well a candidate aligns with job requirements." +InterviewQuestion = "A targeted question designed for a job interview with its underlying purpose." +InterviewSheet = "A comprehensive interview preparation document combining match analysis with targeted interview questions." + +[pipe.cv_job_match] +type = "PipeSequence" +description = """ +Main pipeline that processes CV and job offer PDFs, analyzes their match, and generates targeted interview questions. This is the entry point for the CV-job matching workflow. +""" +inputs = { cv_pdf = "Document", job_offer_pdf = "Document" } +output = "InterviewSheet" +steps = [ + { pipe = "extract_documents", result = "extracted_documents" }, + { pipe = "analyze_documents", result = "analyzed_documents" }, + { pipe = "evaluate_match", result = "match_analysis" }, + { pipe = "generate_interview_questions", result = "interview_questions" }, + { pipe = "compose_interview_sheet", result = "interview_sheet" }, +] + +[pipe.extract_documents] +type = "PipeParallel" +description = "Extracts text content from both the CV and job offer PDFs concurrently" +inputs = { cv_pdf = "Document", job_offer_pdf = "Document" } +output = "Page[]" +parallels = [ + { pipe = "extract_cv", result = "cv_pages" }, + { pipe = "extract_job_offer", result = "job_offer_pages" }, +] +add_each_output = true + +[pipe.extract_cv] +type = "PipeExtract" +description = "Extracts text content from the CV PDF document" +inputs = { cv_pdf = "Document" } +output = "Page[]" +model = "pdf_text_extractor" + +[pipe.extract_job_offer] +type = "PipeExtract" +description = "Extracts text content from the job offer PDF document" +inputs = { job_offer_pdf = "Document" } +output = "Page[]" +model = "pdf_text_extractor" + +[pipe.analyze_documents] +type = "PipeParallel" +description = "Analyzes both the CV and job offer documents concurrently to extract structured information" +inputs = { cv_pages = "Page", job_offer_pages = "Page" } +output = "Text" +parallels = [ + { pipe = "analyze_cv", result = "cv_analysis" }, + { pipe = "analyze_job_offer", result = "job_requirements" }, +] +add_each_output = true + +[pipe.analyze_cv] +type = "PipeLLM" +description = """ +Analyzes the CV to extract key information including skills, experience, education, previous roles, and notable achievements +""" +inputs = { cv_pages = "Page" } +output = "CVAnalysis" +model = "llm_to_answer_questions_cheap" +system_prompt = """ +You are an expert HR analyst specializing in CV evaluation. Your task is to analyze curriculum vitae documents and extract structured information about candidates' professional profiles. +""" +prompt = """ +Analyze the following CV and extract the candidate's key professional information. + +@cv_pages +""" + +[pipe.analyze_job_offer] +type = "PipeLLM" +description = """ +Analyzes the job offer to extract requirements including required skills, preferred skills, responsibilities, qualifications, and experience level +""" +inputs = { job_offer_pages = "Page" } +output = "JobRequirements" +model = "llm_to_answer_questions_cheap" +system_prompt = """ +You are an expert HR analyst specializing in job offer analysis. Your task is to extract and structure key requirements from job postings into a structured format. +""" +prompt = """ +Analyze the following job offer and extract the key requirements for the position. + +@job_offer_pages +""" + +[pipe.evaluate_match] +type = "PipeLLM" +description = """ +Evaluates how well the candidate matches the job requirements, identifying matching skills, gaps, experience alignment, and areas to explore during interview +""" +inputs = { cv_analysis = "CVAnalysis", job_requirements = "JobRequirements" } +output = "MatchAnalysis" +model = "llm_to_answer_questions_cheap" +system_prompt = """ +You are an expert HR analyst and recruiter. Your task is to evaluate how well a candidate matches a job position by analyzing their CV against the job requirements. Provide a structured assessment that will help hiring managers make informed decisions. +""" +prompt = """ +Evaluate how well the candidate matches the job requirements based on the following information: + +**Candidate CV Analysis:** +@cv_analysis + +**Job Requirements:** +@job_requirements + +Analyze the alignment between the candidate's profile and the job requirements. Identify matching skills, missing skills, assess experience alignment, note any areas of concern, and highlight areas that should be explored further during the interview process. Provide an overall match score as a percentage. +""" + +[pipe.generate_interview_questions] +type = "PipeLLM" +description = """ +Creates 5 targeted interview questions based on the match analysis, focusing on verifying claimed skills, exploring gaps, and assessing cultural fit +""" +inputs = { cv_analysis = "CVAnalysis", job_requirements = "JobRequirements", match_analysis = "MatchAnalysis" } +output = "InterviewQuestion[5]" +model = "llm_to_answer_questions_cheap" +system_prompt = """ +You are an expert HR interviewer and talent acquisition specialist. Your task is to generate structured interview questions that will help assess a candidate's fit for a specific role. Each question should be purposeful and designed to verify skills, explore potential gaps, or assess cultural fit. +""" +prompt = """ +Based on the following candidate analysis, job requirements, and match analysis, generate 5 targeted interview questions. + +@cv_analysis + +@job_requirements + +@match_analysis + +Create questions that: +1. Verify the candidate's claimed skills and experience +2. Explore any identified gaps or areas of concern +3. Assess cultural and role fit +4. Investigate areas that warrant further exploration +""" + +[pipe.compose_interview_sheet] +type = "PipeCompose" +description = """ +Composes the final interview sheet by combining the match analysis results with the generated interview questions into a single structured document. +""" +inputs = { match_analysis = "MatchAnalysis", interview_questions = "InterviewQuestion[]" } +output = "InterviewSheet" + +[pipe.compose_interview_sheet.construct] +overall_match_score = { from = "match_analysis.overall_match_score" } +matching_skills = { from = "match_analysis.matching_skills" } +missing_skills = { from = "match_analysis.missing_skills" } +experience_alignment = { from = "match_analysis.experience_alignment" } +areas_of_concern = { from = "match_analysis.areas_of_concern" } +areas_to_explore = { from = "match_analysis.areas_to_explore" } +questions = { from = "interview_questions" } diff --git a/hidden/cv_and_offer/cv_job_matching_analysis.py b/hidden/cv_and_offer/cv_job_matching_analysis.py new file mode 100644 index 0000000..7d7d4bc --- /dev/null +++ b/hidden/cv_and_offer/cv_job_matching_analysis.py @@ -0,0 +1,23 @@ +"""AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + +from pipelex.core.stuffs.structured_content import StructuredContent +from pydantic import Field + + +class CVAnalysis(StructuredContent): + """Generated CVAnalysis class""" + + skills: str = Field(..., description="List of technical and soft skills possessed by the candidate") + years_of_experience: float = Field(..., description="Total years of professional experience") + education: str = Field(..., description="Educational background including degrees and institutions") + previous_roles: str = Field(..., description="List of previous job titles and companies") + key_achievements: str | None = Field(default=None, description="Notable accomplishments and contributions from past positions") diff --git a/hidden/cv_and_offer/cv_job_matching_itvw_question.py b/hidden/cv_and_offer/cv_job_matching_itvw_question.py new file mode 100644 index 0000000..bf53d4a --- /dev/null +++ b/hidden/cv_and_offer/cv_job_matching_itvw_question.py @@ -0,0 +1,20 @@ +"""AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + +from pipelex.core.stuffs.structured_content import StructuredContent +from pydantic import Field + + +class InterviewQuestion(StructuredContent): + """Generated InterviewQuestion class""" + + question_text: str = Field(..., description="The interview question to ask the candidate") + purpose: str = Field(..., description="The reason for asking this question and what it aims to assess") diff --git a/hidden/cv_and_offer/cv_job_matching_itvw_sheet.py b/hidden/cv_and_offer/cv_job_matching_itvw_sheet.py new file mode 100644 index 0000000..d9912d9 --- /dev/null +++ b/hidden/cv_and_offer/cv_job_matching_itvw_sheet.py @@ -0,0 +1,26 @@ +"""AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + +from pipelex.core.stuffs.structured_content import StructuredContent +from pydantic import Field +from tests.e2e.pipelex.pipes.pipe_operators.pipe_compose.cv_job_matching_itvw_question import InterviewQuestion + + +class InterviewSheet(StructuredContent): + """Generated InterviewSheet class""" + + overall_match_score: float = Field(..., description="Percentage or rating indicating overall fit between candidate and position") + matching_skills: str = Field(..., description="Skills the candidate has that match the job requirements") + missing_skills: str = Field(..., description="Required skills the candidate appears to lack") + experience_alignment: str = Field(..., description="Assessment of how the candidate's experience level matches expectations") + areas_of_concern: str = Field(..., description="Potential red flags or weaknesses identified") + areas_to_explore: str = Field(..., description="Topics that warrant further investigation during interview") + questions: list[InterviewQuestion] = Field(..., description="List of interview questions with their purposes") diff --git a/hidden/cv_and_offer/cv_job_matching_job_requirements.py b/hidden/cv_and_offer/cv_job_matching_job_requirements.py new file mode 100644 index 0000000..b4bcbf3 --- /dev/null +++ b/hidden/cv_and_offer/cv_job_matching_job_requirements.py @@ -0,0 +1,23 @@ +"""AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + +from pipelex.core.stuffs.structured_content import StructuredContent +from pydantic import Field + + +class JobRequirements(StructuredContent): + """Generated JobRequirements class""" + + required_skills: str = Field(..., description="Skills that are mandatory for the position") + preferred_skills: str | None = Field(default=None, description="Skills that are desirable but not mandatory") + responsibilities: str = Field(..., description="Main duties and tasks of the role") + qualifications: str | None = Field(default=None, description="Required educational or professional qualifications") + experience_level: str = Field(..., description="Expected level of experience for the role") diff --git a/hidden/cv_and_offer/cv_job_matching_match_analysis.py b/hidden/cv_and_offer/cv_job_matching_match_analysis.py new file mode 100644 index 0000000..2870d5b --- /dev/null +++ b/hidden/cv_and_offer/cv_job_matching_match_analysis.py @@ -0,0 +1,24 @@ +"""AUTOGENERATED CODE - DO NOT EDIT + +If you want to customize this structure: + 1. Copy this file to your own module + 2. Remove the 'structure' or 'refines' declaration from the concept in the PLX file + and declare it in inline mode (see https://docs.pipelex.com/home/6-build-reliable-ai-workflows/concepts/define_your_concepts/#basic-concept-definition) + 3. Make sure your custom class is importable and registered + +To regenerate: pipelex build structures +""" + +from pipelex.core.stuffs.structured_content import StructuredContent +from pydantic import Field + + +class MatchAnalysis(StructuredContent): + """Generated MatchAnalysis class""" + + overall_match_score: float = Field(..., description="Percentage or rating indicating overall fit between candidate and position") + matching_skills: str = Field(..., description="Skills the candidate has that match the job requirements") + missing_skills: str | None = Field(default=None, description="Required skills the candidate appears to lack") + experience_alignment: str = Field(..., description="Assessment of how the candidate's experience level matches expectations") + areas_of_concern: str | None = Field(default=None, description="Potential red flags or weaknesses identified") + areas_to_explore: str = Field(..., description="Topics that warrant further investigation during interview") diff --git a/hidden/cv_and_offer/graphspec.json b/hidden/cv_and_offer/graphspec.json new file mode 100644 index 0000000..0290bd2 --- /dev/null +++ b/hidden/cv_and_offer/graphspec.json @@ -0,0 +1,954 @@ +{ + "graph_id": "8c69028d-d006-4766-a68e-e58324a16d41", + "created_at": "2026-01-09T15:22:29.379107Z", + "pipeline_ref": { + "domain": "cv_and_offer", + "main_pipe": "cv_job_match", + "entrypoint": null + }, + "nodes": [ + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "kind": "controller", + "pipe_code": "cv_job_match", + "pipe_type": "PipeSequence", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:29.385329Z", + "ended_at": "2026-01-09T15:22:54.753515Z", + "duration_ms": 25368 + }, + "io": { + "inputs": [ + { + "name": "cv_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "ddozj", + "data": { + "url": "data/CVx5/CV-01.pdf" + }, + "data_text": "{\n \"url\": \"data/CVx5/CV-01.pdf\"\n}\n", + "data_html": "data/CVx5/CV-01.pdf", + "extra": {} + }, + { + "name": "job_offer_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "QzpHH", + "data": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + }, + "data_text": "{\n \"url\": \"https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf\"\n}\n", + "data_html": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf", + "extra": {} + } + ], + "outputs": [ + { + "name": "interview_sheet", + "concept": "InterviewSheet", + "content_type": null, + "preview": null, + "size": null, + "digest": "nbqHw", + "data": { + "overall_match_score": 10.0, + "matching_skills": "Customer Service, Organizational Skills, Leadership, Sales", + "missing_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA", + "experience_alignment": "The candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.", + "areas_of_concern": "The candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.", + "areas_to_explore": "Discuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.", + "questions": [ + { + "question_text": "Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?", + "purpose": "To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role." + }, + { + "question_text": "What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?", + "purpose": "To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position." + }, + { + "question_text": "Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?", + "purpose": "To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role." + }, + { + "question_text": "Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?", + "purpose": "To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor." + }, + { + "question_text": "What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?", + "purpose": "To investigate the candidate's passion for talent development and their history of fostering leadership within their teams." + } + ] + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n overall_match_score │ 10.0 \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n matching_skills │ Customer Service, Organizational Skills, Leadership, Sales \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n missing_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executi\n │ to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterp\n │ Track record of building sales teams from early stage through scale, Experti\n │ selling and strategic account management, Strong analytical skills with prof\n │ analytics tools, History of developing talent - multiple direct reports prom\n │ roles, Experience with channel/partner sales models, Passion for coaching an\n │ high-performing teams, 12+ years of experience, MBA \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n experience_alignment │ The candidate has 8.2 years of experience, which is below the required 12+ y\n │ executive-level position. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_of_concern │ The candidate lacks the necessary experience in SaaS sales and executive-lev\n │ which are critical for this role. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_to_explore │ Discuss the candidate's leadership experience and ability to develop teams, \n │ understanding of enterprise sales strategies. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n questions │ 1 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Can you describe your experience in leading and dev\n │ │ │ strategies have you implemented to ensure their suc\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To assess the candidate's leadership experience and\n │ │ │ high-performing teams, which is crucial for the rol\n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 2 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ What approaches have you used to engage C-suite exe\n │ │ │ Can you provide an example of a successful engageme\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To evaluate the candidate's executive presence and \n │ │ │ with high-level stakeholders, which is essential fo\n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 3 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Given your background in retail sales, how do you p\n │ │ │ to selling SaaS solutions to enterprise clients? \n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To explore the candidate's understanding of SaaS sa\n │ │ │ their skills to meet the requirements of the role. \n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 4 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Can you discuss a time when you had to analyze sale\n │ │ │ decisions? What tools did you use, and what was the\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To assess the candidate's analytical skills and fam\n │ │ │ tools, which are important for driving operational \n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 5 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ What is your philosophy on coaching and developing \n │ │ │ you share a specific instance where you successfull\n │ │ │ leadership role? \n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To investigate the candidate's passion for talent d\n │ │ │ fostering leadership within their teams. \n", + "data_html": "
overall_match_score10.0
matching_skillsCustomer Service, Organizational Skills, Leadership, Sales
missing_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA
experience_alignmentThe candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.
areas_of_concernThe candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.
areas_to_exploreDiscuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.
questions
question_textpurpose
Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role.
What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position.
Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role.
Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor.
What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?To investigate the candidate's passion for talent development and their history of fostering leadership within their teams.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_1", + "kind": "controller", + "pipe_code": "extract_documents", + "pipe_type": "PipeParallel", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:29.390687Z", + "ended_at": "2026-01-09T15:22:38.539923Z", + "duration_ms": 9149 + }, + "io": { + "inputs": [ + { + "name": "cv_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "ddozj", + "data": { + "url": "data/CVx5/CV-01.pdf" + }, + "data_text": "{\n \"url\": \"data/CVx5/CV-01.pdf\"\n}\n", + "data_html": "data/CVx5/CV-01.pdf", + "extra": {} + }, + { + "name": "job_offer_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "QzpHH", + "data": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + }, + "data_text": "{\n \"url\": \"https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf\"\n}\n", + "data_html": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf", + "extra": {} + } + ], + "outputs": [] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_2", + "kind": "operator", + "pipe_code": "extract_cv", + "pipe_type": "PipeExtract", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:29.395097Z", + "ended_at": "2026-01-09T15:22:36.078102Z", + "duration_ms": 6683 + }, + "io": { + "inputs": [ + { + "name": "cv_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "ddozj", + "data": { + "url": "data/CVx5/CV-01.pdf" + }, + "data_text": "{\n \"url\": \"data/CVx5/CV-01.pdf\"\n}\n", + "data_html": "data/CVx5/CV-01.pdf", + "extra": {} + } + ], + "outputs": [ + { + "name": "cv_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "SWQZK", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n\" Bachelor of Science in Graphic Design\n\n\" Cumulative GPA 3.93, Dean's List\n\n\" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n\" Use my trend awareness to assist customers in their shopping experience\n\n\" Thoroughly scan every piece of merchandise for inventory control\n\n\" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n\" Sell retail and memberships to meet company sales goals\n\n\" Build organizational skills by single handedly running all operating procedures\n\n\" Communicate with clients to fulfill their wants and needs\n\n\" Attend promotional events to market our services\n\n\" Handle cash and deposits during opening and closing\n\n\" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n\" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n\" Applied my leadership skills by assisting in the training of coworkers\n\n\" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n\" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n\" Represented Periscope Marketing and Target Inc. at a college event\n\n\" Engaged University of Minnesota freshman in the Target brand experience\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ JOHN DOE \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ \n │ Full Address . City, State, ZIP . Phone Number . E-mail \n │ \n │ OBJECTIVE: Design apparel print for an innovative retail company \n │ \n │ EDUCATION: \n │ \n │ UNIVERSITY OF MINNESOTA College of Design \" Bachelor of Science in Graphic Design \n │ \n │ \" Cumulative GPA 3.93, Dean's List \n │ \n │ \" Twin cities Iron Range Scholarship \n │ \n │ City, State May 2011 \n │ \n │ WORK EXPERIENCE: \n │ \n │ AMERICAN EAGLE Sales Associate \n │ \n │ City, State July 2009 - present \n │ \n │ · Collaborated with the store merchandiser creating displays to attract clientele \n │ \n │ \" Use my trend awareness to assist customers in their shopping experience \n │ \n │ \" Thoroughly scan every piece of merchandise for inventory control \n │ \n │ \" Process shipment to increase my product knowledge \n │ \n │ PLANET BEACH Spa Consultant City, State Aug. 2008 - present \n │ \n │ \" Sell retail and memberships to meet company sales goals \n │ \n │ \" Build organizational skills by single handedly running all operating procedures \n │ \n │ \" Communicate with clients to fulfill their wants and needs \n │ \n │ \" Attend promotional events to market our services \n │ \n │ \" Handle cash and deposits during opening and closing \n │ \n │ \" Received employee of the month award twice \n │ \n │ HEARTBREAKER Sales Associate City, State May 2008 - Aug. 2008 \n │ \n │ · Stocked sales floor with fast fashion inventory \n │ \n │ · Marked down items allowing me to see unsuccessful merchandise in a retail market \n │ \n │ \" Offered advice and assistance to each guest \n │ \n │ VICTORIA'S SECRET Fashion Representative City, State Jan. 2006 - Feb. 2009 \n │ \n │ \" Applied my leadership skills by assisting in the training of coworkers \n │ \n │ \" Set up mannequins and displays in order to entice future customers \n │ \n │ · Provided superior customer service by helping with consumer decisions \n │ \n │ \" Took seasonal inventory \n │ \n │ VOLUNTEER EXPERIENCE: \n │ \n │ TARGET CORPORATION Brand Ambassador \n │ \n │ City, State August 2009 \n │ \n │ \" Represented Periscope Marketing and Target Inc. at a college event \n │ \n │ \" Engaged University of Minnesota freshman in the Target brand experience \n", + "data_html": "
text_and_imagespage_view
text
text# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n" Bachelor of Science in Graphic Design\n\n" Cumulative GPA 3.93, Dean's List\n\n" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n" Use my trend awareness to assist customers in their shopping experience\n\n" Thoroughly scan every piece of merchandise for inventory control\n\n" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n" Sell retail and memberships to meet company sales goals\n\n" Build organizational skills by single handedly running all operating procedures\n\n" Communicate with clients to fulfill their wants and needs\n\n" Attend promotional events to market our services\n\n" Handle cash and deposits during opening and closing\n\n" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n" Applied my leadership skills by assisting in the training of coworkers\n\n" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n" Represented Periscope Marketing and Target Inc. at a college event\n\n" Engaged University of Minnesota freshman in the Target brand experience\n
images
None
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_3", + "kind": "operator", + "pipe_code": "extract_job_offer", + "pipe_type": "PipeExtract", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:29.934049Z", + "ended_at": "2026-01-09T15:22:38.534909Z", + "duration_ms": 8600 + }, + "io": { + "inputs": [ + { + "name": "job_offer_pdf", + "concept": "Document", + "content_type": "application/pdf", + "preview": null, + "size": null, + "digest": "QzpHH", + "data": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + }, + "data_text": "{\n \"url\": \"https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf\"\n}\n", + "data_html": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf", + "extra": {} + } + ], + "outputs": [ + { + "name": "job_offer_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "Rrzjq", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n\n\n" + }, + "images": [] + }, + "page_view": null + }, + { + "text_and_images": { + "text": { + "text": "· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
· Premium medical, dental, and vision coverage· 401(k) with 6% company match
· Flexible PTO policy· $5,000 annual professional development budget
· Executive coaching program· Wellness reimbursement ($1,200/year)
· 8 paid volunteer days (VTO)· Paid parental leave (26 weeks primary caregiver)
· Employee stock purchase plan (15% discount)· Relocation assistance available
\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ Vice President, Enterprise Sales \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ ACME · San Francisco, CA (Hybrid) Full-time . Executive Level \n │ \n │ \n │ About ACME \n │ \n │ ACME is the global leader in CRM, empowering companies to connect with their customers in \n │ on our core values of Trust, Customer Success, Innovation, and Equality, we're transformin\n │ with their customers across sales, service, marketing, and more. \n │ \n │ \n │ The Opportunity \n │ \n │ We're seeking an exceptional Vice President of Enterprise Sales to lead our North American\n │ drive the next phase of our growth. This is a high-impact role where you'll build and scal\n │ organization, own significant revenue accountability, and work directly with C-suite execu\n │ companies. \n │ \n │ As VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in AR\n │ critical role in shaping our go-to-market strategy. This is an opportunity to make your ma\n │ most innovative technology companies. \n │ \n │ \n │ What You'll Do \n │ \n │ · Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professio\n │ regions \n │ \n │ · Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic pla\n │ \n │ · Strategic Execution: Develop and implement sales strategies that accelerate pipeline gro\n │ rates \n │ \n │ · Customer Relationships: Build and maintain executive relationships with C-level stakehol\n │ accounts \n │ \n │ · Sales Excellence: Drive operational rigor through accurate forecasting, process optimiza\n │ decision making \n │ \n │ · Talent Development: Coach, mentor, and develop the next generation of sales leaders \n │ \n │ · Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Chan\n │ integrated solutions \n │ \n │ · Innovation: Champion new sales methodologies, tools, and approaches that improve team pr\n │ \n │ \n │ What You Bring \n │ \n │ Required Qualifications \n │ \n │ · 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equiv\n │ \n │ · Proven track record of building and scaling enterprise sales teams of 50+ people \n │ \n │ · Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets \n │ \n │ · Deep expertise in complex, consultative sales with 6-12 month sales cycles \n │ \n────────┼───────────────────────────────────────────────────────────────────────────────────────────\n 2 │ · Experience selling SaaS solutions to Fortune 500 enterprises \n │ \n │ · Strong executive presence with ability to engage C-suite buyers \n │ \n │ · Bachelor's degree required; MBA preferred \n │ \n │ What Sets You Apart \n │ \n │ · Experience in CRM, cloud infrastructure, or enterprise software markets \n │ \n │ · Track record of building sales teams from early stage through scale \n │ \n │ · Expertise in account-based selling and strategic account management \n │ \n │ · Strong analytical skills with proficiency in ACME, sales analytics tools \n │ \n │ · History of developing talent - multiple direct reports promoted to leadership roles \n │ \n │ · Experience with channel/partner sales models \n │ \n │ · Passion for coaching and developing high-performing teams \n │ \n │ Leadership Competencies \n │ \n │ · Strategic thinking and business acumen \n │ \n │ · Exceptional communication and executive presence \n │ \n │ · Data-driven decision making \n │ \n │ · Change management and organizational development \n │ \n │ · Cross-functional collaboration \n │ \n │ · Diversity, equity, and inclusion advocacy \n │ \n │ Compensation & Benefits \n │ \n │ Total Target Compensation: $975,000 \n │ \n │ · Base Salary: $325,000 \n │ \n │ · Variable Compensation: $650,000 (at 100% quota attainment) \n │ \n │ · Equity: RSU grant valued at $500,000 (4-year vesting) \n │ \n │ · Sign-on Bonus: $100,000 \n │ \n │ Comprehensive Benefits Package \n │ \n", + "data_html": "
text_and_imagespage_view
text
text# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n<!-- PageBreak -->\n\n
images
None
text
text· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n<table>\n<tr>\n<td>· Premium medical, dental, and vision coverage</td>\n<td>· 401(k) with 6% company match</td>\n</tr>\n<tr>\n<td>· Flexible PTO policy</td>\n<td>· $5,000 annual professional development budget</td>\n</tr>\n<tr>\n<td>· Executive coaching program</td>\n<td>· Wellness reimbursement ($1,200/year)</td>\n</tr>\n<tr>\n<td>· 8 paid volunteer days (VTO)</td>\n<td>· Paid parental leave (26 weeks primary caregiver)</td>\n</tr>\n<tr>\n<td>· Employee stock purchase plan (15% discount)</td>\n<td>· Relocation assistance available</td>\n</tr>\n</table>\n
images
None
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "kind": "controller", + "pipe_code": "analyze_documents", + "pipe_type": "PipeParallel", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:38.541055Z", + "ended_at": "2026-01-09T15:22:45.877785Z", + "duration_ms": 7336 + }, + "io": { + "inputs": [ + { + "name": "cv_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "SWQZK", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n\" Bachelor of Science in Graphic Design\n\n\" Cumulative GPA 3.93, Dean's List\n\n\" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n\" Use my trend awareness to assist customers in their shopping experience\n\n\" Thoroughly scan every piece of merchandise for inventory control\n\n\" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n\" Sell retail and memberships to meet company sales goals\n\n\" Build organizational skills by single handedly running all operating procedures\n\n\" Communicate with clients to fulfill their wants and needs\n\n\" Attend promotional events to market our services\n\n\" Handle cash and deposits during opening and closing\n\n\" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n\" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n\" Applied my leadership skills by assisting in the training of coworkers\n\n\" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n\" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n\" Represented Periscope Marketing and Target Inc. at a college event\n\n\" Engaged University of Minnesota freshman in the Target brand experience\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ JOHN DOE \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ \n │ Full Address . City, State, ZIP . Phone Number . E-mail \n │ \n │ OBJECTIVE: Design apparel print for an innovative retail company \n │ \n │ EDUCATION: \n │ \n │ UNIVERSITY OF MINNESOTA College of Design \" Bachelor of Science in Graphic Design \n │ \n │ \" Cumulative GPA 3.93, Dean's List \n │ \n │ \" Twin cities Iron Range Scholarship \n │ \n │ City, State May 2011 \n │ \n │ WORK EXPERIENCE: \n │ \n │ AMERICAN EAGLE Sales Associate \n │ \n │ City, State July 2009 - present \n │ \n │ · Collaborated with the store merchandiser creating displays to attract clientele \n │ \n │ \" Use my trend awareness to assist customers in their shopping experience \n │ \n │ \" Thoroughly scan every piece of merchandise for inventory control \n │ \n │ \" Process shipment to increase my product knowledge \n │ \n │ PLANET BEACH Spa Consultant City, State Aug. 2008 - present \n │ \n │ \" Sell retail and memberships to meet company sales goals \n │ \n │ \" Build organizational skills by single handedly running all operating procedures \n │ \n │ \" Communicate with clients to fulfill their wants and needs \n │ \n │ \" Attend promotional events to market our services \n │ \n │ \" Handle cash and deposits during opening and closing \n │ \n │ \" Received employee of the month award twice \n │ \n │ HEARTBREAKER Sales Associate City, State May 2008 - Aug. 2008 \n │ \n │ · Stocked sales floor with fast fashion inventory \n │ \n │ · Marked down items allowing me to see unsuccessful merchandise in a retail market \n │ \n │ \" Offered advice and assistance to each guest \n │ \n │ VICTORIA'S SECRET Fashion Representative City, State Jan. 2006 - Feb. 2009 \n │ \n │ \" Applied my leadership skills by assisting in the training of coworkers \n │ \n │ \" Set up mannequins and displays in order to entice future customers \n │ \n │ · Provided superior customer service by helping with consumer decisions \n │ \n │ \" Took seasonal inventory \n │ \n │ VOLUNTEER EXPERIENCE: \n │ \n │ TARGET CORPORATION Brand Ambassador \n │ \n │ City, State August 2009 \n │ \n │ \" Represented Periscope Marketing and Target Inc. at a college event \n │ \n │ \" Engaged University of Minnesota freshman in the Target brand experience \n", + "data_html": "
text_and_imagespage_view
text
text# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n" Bachelor of Science in Graphic Design\n\n" Cumulative GPA 3.93, Dean's List\n\n" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n" Use my trend awareness to assist customers in their shopping experience\n\n" Thoroughly scan every piece of merchandise for inventory control\n\n" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n" Sell retail and memberships to meet company sales goals\n\n" Build organizational skills by single handedly running all operating procedures\n\n" Communicate with clients to fulfill their wants and needs\n\n" Attend promotional events to market our services\n\n" Handle cash and deposits during opening and closing\n\n" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n" Applied my leadership skills by assisting in the training of coworkers\n\n" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n" Represented Periscope Marketing and Target Inc. at a college event\n\n" Engaged University of Minnesota freshman in the Target brand experience\n
images
None
", + "extra": {} + }, + { + "name": "job_offer_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "Rrzjq", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n\n\n" + }, + "images": [] + }, + "page_view": null + }, + { + "text_and_images": { + "text": { + "text": "· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
· Premium medical, dental, and vision coverage· 401(k) with 6% company match
· Flexible PTO policy· $5,000 annual professional development budget
· Executive coaching program· Wellness reimbursement ($1,200/year)
· 8 paid volunteer days (VTO)· Paid parental leave (26 weeks primary caregiver)
· Employee stock purchase plan (15% discount)· Relocation assistance available
\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ Vice President, Enterprise Sales \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ ACME · San Francisco, CA (Hybrid) Full-time . Executive Level \n │ \n │ \n │ About ACME \n │ \n │ ACME is the global leader in CRM, empowering companies to connect with their customers in \n │ on our core values of Trust, Customer Success, Innovation, and Equality, we're transformin\n │ with their customers across sales, service, marketing, and more. \n │ \n │ \n │ The Opportunity \n │ \n │ We're seeking an exceptional Vice President of Enterprise Sales to lead our North American\n │ drive the next phase of our growth. This is a high-impact role where you'll build and scal\n │ organization, own significant revenue accountability, and work directly with C-suite execu\n │ companies. \n │ \n │ As VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in AR\n │ critical role in shaping our go-to-market strategy. This is an opportunity to make your ma\n │ most innovative technology companies. \n │ \n │ \n │ What You'll Do \n │ \n │ · Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professio\n │ regions \n │ \n │ · Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic pla\n │ \n │ · Strategic Execution: Develop and implement sales strategies that accelerate pipeline gro\n │ rates \n │ \n │ · Customer Relationships: Build and maintain executive relationships with C-level stakehol\n │ accounts \n │ \n │ · Sales Excellence: Drive operational rigor through accurate forecasting, process optimiza\n │ decision making \n │ \n │ · Talent Development: Coach, mentor, and develop the next generation of sales leaders \n │ \n │ · Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Chan\n │ integrated solutions \n │ \n │ · Innovation: Champion new sales methodologies, tools, and approaches that improve team pr\n │ \n │ \n │ What You Bring \n │ \n │ Required Qualifications \n │ \n │ · 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equiv\n │ \n │ · Proven track record of building and scaling enterprise sales teams of 50+ people \n │ \n │ · Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets \n │ \n │ · Deep expertise in complex, consultative sales with 6-12 month sales cycles \n │ \n────────┼───────────────────────────────────────────────────────────────────────────────────────────\n 2 │ · Experience selling SaaS solutions to Fortune 500 enterprises \n │ \n │ · Strong executive presence with ability to engage C-suite buyers \n │ \n │ · Bachelor's degree required; MBA preferred \n │ \n │ What Sets You Apart \n │ \n │ · Experience in CRM, cloud infrastructure, or enterprise software markets \n │ \n │ · Track record of building sales teams from early stage through scale \n │ \n │ · Expertise in account-based selling and strategic account management \n │ \n │ · Strong analytical skills with proficiency in ACME, sales analytics tools \n │ \n │ · History of developing talent - multiple direct reports promoted to leadership roles \n │ \n │ · Experience with channel/partner sales models \n │ \n │ · Passion for coaching and developing high-performing teams \n │ \n │ Leadership Competencies \n │ \n │ · Strategic thinking and business acumen \n │ \n │ · Exceptional communication and executive presence \n │ \n │ · Data-driven decision making \n │ \n │ · Change management and organizational development \n │ \n │ · Cross-functional collaboration \n │ \n │ · Diversity, equity, and inclusion advocacy \n │ \n │ Compensation & Benefits \n │ \n │ Total Target Compensation: $975,000 \n │ \n │ · Base Salary: $325,000 \n │ \n │ · Variable Compensation: $650,000 (at 100% quota attainment) \n │ \n │ · Equity: RSU grant valued at $500,000 (4-year vesting) \n │ \n │ · Sign-on Bonus: $100,000 \n │ \n │ Comprehensive Benefits Package \n │ \n", + "data_html": "
text_and_imagespage_view
text
text# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n<!-- PageBreak -->\n\n
images
None
text
text· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n<table>\n<tr>\n<td>· Premium medical, dental, and vision coverage</td>\n<td>· 401(k) with 6% company match</td>\n</tr>\n<tr>\n<td>· Flexible PTO policy</td>\n<td>· $5,000 annual professional development budget</td>\n</tr>\n<tr>\n<td>· Executive coaching program</td>\n<td>· Wellness reimbursement ($1,200/year)</td>\n</tr>\n<tr>\n<td>· 8 paid volunteer days (VTO)</td>\n<td>· Paid parental leave (26 weeks primary caregiver)</td>\n</tr>\n<tr>\n<td>· Employee stock purchase plan (15% discount)</td>\n<td>· Relocation assistance available</td>\n</tr>\n</table>\n
images
None
", + "extra": {} + } + ], + "outputs": [] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_5", + "kind": "operator", + "pipe_code": "analyze_cv", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:38.554069Z", + "ended_at": "2026-01-09T15:22:41.359648Z", + "duration_ms": 2805 + }, + "io": { + "inputs": [ + { + "name": "cv_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "SWQZK", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n\" Bachelor of Science in Graphic Design\n\n\" Cumulative GPA 3.93, Dean's List\n\n\" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n\" Use my trend awareness to assist customers in their shopping experience\n\n\" Thoroughly scan every piece of merchandise for inventory control\n\n\" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n\" Sell retail and memberships to meet company sales goals\n\n\" Build organizational skills by single handedly running all operating procedures\n\n\" Communicate with clients to fulfill their wants and needs\n\n\" Attend promotional events to market our services\n\n\" Handle cash and deposits during opening and closing\n\n\" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n\" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n\" Applied my leadership skills by assisting in the training of coworkers\n\n\" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n\" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n\" Represented Periscope Marketing and Target Inc. at a college event\n\n\" Engaged University of Minnesota freshman in the Target brand experience\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ JOHN DOE \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ \n │ Full Address . City, State, ZIP . Phone Number . E-mail \n │ \n │ OBJECTIVE: Design apparel print for an innovative retail company \n │ \n │ EDUCATION: \n │ \n │ UNIVERSITY OF MINNESOTA College of Design \" Bachelor of Science in Graphic Design \n │ \n │ \" Cumulative GPA 3.93, Dean's List \n │ \n │ \" Twin cities Iron Range Scholarship \n │ \n │ City, State May 2011 \n │ \n │ WORK EXPERIENCE: \n │ \n │ AMERICAN EAGLE Sales Associate \n │ \n │ City, State July 2009 - present \n │ \n │ · Collaborated with the store merchandiser creating displays to attract clientele \n │ \n │ \" Use my trend awareness to assist customers in their shopping experience \n │ \n │ \" Thoroughly scan every piece of merchandise for inventory control \n │ \n │ \" Process shipment to increase my product knowledge \n │ \n │ PLANET BEACH Spa Consultant City, State Aug. 2008 - present \n │ \n │ \" Sell retail and memberships to meet company sales goals \n │ \n │ \" Build organizational skills by single handedly running all operating procedures \n │ \n │ \" Communicate with clients to fulfill their wants and needs \n │ \n │ \" Attend promotional events to market our services \n │ \n │ \" Handle cash and deposits during opening and closing \n │ \n │ \" Received employee of the month award twice \n │ \n │ HEARTBREAKER Sales Associate City, State May 2008 - Aug. 2008 \n │ \n │ · Stocked sales floor with fast fashion inventory \n │ \n │ · Marked down items allowing me to see unsuccessful merchandise in a retail market \n │ \n │ \" Offered advice and assistance to each guest \n │ \n │ VICTORIA'S SECRET Fashion Representative City, State Jan. 2006 - Feb. 2009 \n │ \n │ \" Applied my leadership skills by assisting in the training of coworkers \n │ \n │ \" Set up mannequins and displays in order to entice future customers \n │ \n │ · Provided superior customer service by helping with consumer decisions \n │ \n │ \" Took seasonal inventory \n │ \n │ VOLUNTEER EXPERIENCE: \n │ \n │ TARGET CORPORATION Brand Ambassador \n │ \n │ City, State August 2009 \n │ \n │ \" Represented Periscope Marketing and Target Inc. at a college event \n │ \n │ \" Engaged University of Minnesota freshman in the Target brand experience \n", + "data_html": "
text_and_imagespage_view
text
text# JOHN DOE\n\n\n## Full Address . City, State, ZIP . Phone Number . E-mail\n\nOBJECTIVE: Design apparel print for an innovative retail company\n\nEDUCATION:\n\nUNIVERSITY OF MINNESOTA\nCollege of Design\n" Bachelor of Science in Graphic Design\n\n" Cumulative GPA 3.93, Dean's List\n\n" Twin cities Iron Range Scholarship\n\nCity, State\nMay 2011\n\nWORK EXPERIENCE:\n\nAMERICAN EAGLE\nSales Associate\n\nCity, State\nJuly 2009 - present\n\n· Collaborated with the store merchandiser creating displays to attract clientele\n\n" Use my trend awareness to assist customers in their shopping experience\n\n" Thoroughly scan every piece of merchandise for inventory control\n\n" Process shipment to increase my product knowledge\n\nPLANET BEACH\nSpa Consultant\nCity, State\nAug. 2008 - present\n\n" Sell retail and memberships to meet company sales goals\n\n" Build organizational skills by single handedly running all operating procedures\n\n" Communicate with clients to fulfill their wants and needs\n\n" Attend promotional events to market our services\n\n" Handle cash and deposits during opening and closing\n\n" Received employee of the month award twice\n\nHEARTBREAKER\nSales Associate\nCity, State\nMay 2008 - Aug. 2008\n\n· Stocked sales floor with fast fashion inventory\n\n· Marked down items allowing me to see unsuccessful merchandise in a retail market\n\n" Offered advice and assistance to each guest\n\nVICTORIA'S SECRET\nFashion Representative\nCity, State\nJan. 2006 - Feb. 2009\n\n" Applied my leadership skills by assisting in the training of coworkers\n\n" Set up mannequins and displays in order to entice future customers\n\n· Provided superior customer service by helping with consumer decisions\n\n" Took seasonal inventory\n\nVOLUNTEER EXPERIENCE:\n\nTARGET CORPORATION\nBrand Ambassador\n\nCity, State\nAugust 2009\n\n" Represented Periscope Marketing and Target Inc. at a college event\n\n" Engaged University of Minnesota freshman in the Target brand experience\n
images
None
", + "extra": {} + } + ], + "outputs": [ + { + "name": "cv_analysis", + "concept": "CVAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "goCJ7", + "data": { + "skills": "Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control", + "years_of_experience": 8.2, + "education": "Bachelor of Science in Graphic Design, University of Minnesota, College of Design", + "previous_roles": "Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation", + "key_achievements": "Received employee of the month award twice at Planet Beach" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n skills │ Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Lea\n │ Inventory Control \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n years_of_experience │ 8.2 \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n education │ Bachelor of Science in Graphic Design, University of Minnesota, College of De\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n previous_roles │ Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Asso\n │ Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corpo\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n key_achievements │ Received employee of the month award twice at Planet Beach \n", + "data_html": "
skillsGraphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control
years_of_experience8.2
educationBachelor of Science in Graphic Design, University of Minnesota, College of Design
previous_rolesSales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation
key_achievementsReceived employee of the month award twice at Planet Beach
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_6", + "kind": "operator", + "pipe_code": "analyze_job_offer", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:38.596905Z", + "ended_at": "2026-01-09T15:22:45.872285Z", + "duration_ms": 7275 + }, + "io": { + "inputs": [ + { + "name": "job_offer_pages", + "concept": "Page", + "content_type": null, + "preview": null, + "size": null, + "digest": "Rrzjq", + "data": { + "items": [ + { + "text_and_images": { + "text": { + "text": "# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n\n\n" + }, + "images": [] + }, + "page_view": null + }, + { + "text_and_images": { + "text": { + "text": "· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
· Premium medical, dental, and vision coverage· 401(k) with 6% company match
· Flexible PTO policy· $5,000 annual professional development budget
· Executive coaching program· Wellness reimbursement ($1,200/year)
· 8 paid volunteer days (VTO)· Paid parental leave (26 weeks primary caregiver)
· Employee stock purchase plan (15% discount)· Relocation assistance available
\n" + }, + "images": [] + }, + "page_view": null + } + ] + }, + "data_text": " 1 │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ ┃ Vice President, Enterprise Sales \n │ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ \n │ ACME · San Francisco, CA (Hybrid) Full-time . Executive Level \n │ \n │ \n │ About ACME \n │ \n │ ACME is the global leader in CRM, empowering companies to connect with their customers in \n │ on our core values of Trust, Customer Success, Innovation, and Equality, we're transformin\n │ with their customers across sales, service, marketing, and more. \n │ \n │ \n │ The Opportunity \n │ \n │ We're seeking an exceptional Vice President of Enterprise Sales to lead our North American\n │ drive the next phase of our growth. This is a high-impact role where you'll build and scal\n │ organization, own significant revenue accountability, and work directly with C-suite execu\n │ companies. \n │ \n │ As VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in AR\n │ critical role in shaping our go-to-market strategy. This is an opportunity to make your ma\n │ most innovative technology companies. \n │ \n │ \n │ What You'll Do \n │ \n │ · Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professio\n │ regions \n │ \n │ · Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic pla\n │ \n │ · Strategic Execution: Develop and implement sales strategies that accelerate pipeline gro\n │ rates \n │ \n │ · Customer Relationships: Build and maintain executive relationships with C-level stakehol\n │ accounts \n │ \n │ · Sales Excellence: Drive operational rigor through accurate forecasting, process optimiza\n │ decision making \n │ \n │ · Talent Development: Coach, mentor, and develop the next generation of sales leaders \n │ \n │ · Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Chan\n │ integrated solutions \n │ \n │ · Innovation: Champion new sales methodologies, tools, and approaches that improve team pr\n │ \n │ \n │ What You Bring \n │ \n │ Required Qualifications \n │ \n │ · 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equiv\n │ \n │ · Proven track record of building and scaling enterprise sales teams of 50+ people \n │ \n │ · Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets \n │ \n │ · Deep expertise in complex, consultative sales with 6-12 month sales cycles \n │ \n────────┼───────────────────────────────────────────────────────────────────────────────────────────\n 2 │ · Experience selling SaaS solutions to Fortune 500 enterprises \n │ \n │ · Strong executive presence with ability to engage C-suite buyers \n │ \n │ · Bachelor's degree required; MBA preferred \n │ \n │ What Sets You Apart \n │ \n │ · Experience in CRM, cloud infrastructure, or enterprise software markets \n │ \n │ · Track record of building sales teams from early stage through scale \n │ \n │ · Expertise in account-based selling and strategic account management \n │ \n │ · Strong analytical skills with proficiency in ACME, sales analytics tools \n │ \n │ · History of developing talent - multiple direct reports promoted to leadership roles \n │ \n │ · Experience with channel/partner sales models \n │ \n │ · Passion for coaching and developing high-performing teams \n │ \n │ Leadership Competencies \n │ \n │ · Strategic thinking and business acumen \n │ \n │ · Exceptional communication and executive presence \n │ \n │ · Data-driven decision making \n │ \n │ · Change management and organizational development \n │ \n │ · Cross-functional collaboration \n │ \n │ · Diversity, equity, and inclusion advocacy \n │ \n │ Compensation & Benefits \n │ \n │ Total Target Compensation: $975,000 \n │ \n │ · Base Salary: $325,000 \n │ \n │ · Variable Compensation: $650,000 (at 100% quota attainment) \n │ \n │ · Equity: RSU grant valued at $500,000 (4-year vesting) \n │ \n │ · Sign-on Bonus: $100,000 \n │ \n │ Comprehensive Benefits Package \n │ \n", + "data_html": "
text_and_imagespage_view
text
text# Vice President, Enterprise Sales\n\nACME · San Francisco, CA (Hybrid)\nFull-time . Executive Level\n\n\n## About ACME\n\nACME is the global leader in CRM, empowering companies to connect with their customers in entirely new ways.\nBuilt on our core values of Trust, Customer Success, Innovation, and Equality, we're transforming how businesses\nengage with their customers across sales, service, marketing, and more.\n\n\n## The Opportunity\n\nWe're seeking an exceptional Vice President of Enterprise Sales to lead our North American Enterprise\nsegment and drive the next phase of our growth. This is a high-impact role where you'll build and scale a world-\nclass sales organization, own significant revenue accountability, and work directly with C-suite executives at\nFortune 500 companies.\n\nAs VP of Enterprise Sales, you'll lead 60+ enterprise account executives, own $180M+ in ARR quota, and play a\ncritical role in shaping our go-to-market strategy. This is an opportunity to make your mark at one of the world's\nmost innovative technology companies.\n\n\n## What You'll Do\n\n· Lead & Scale: Build and develop a high-performing team of 60+ enterprise sales professionals across multiple\nregions\n\n· Drive Revenue: Own and deliver $180M+ ARR with full P&L accountability and strategic planning\nresponsibility\n\n· Strategic Execution: Develop and implement sales strategies that accelerate pipeline growth and increase\nwin rates\n\n· Customer Relationships: Build and maintain executive relationships with C-level stakeholders at our largest\naccounts\n\n· Sales Excellence: Drive operational rigor through accurate forecasting, process optimization, and data-driven\ndecision making\n\n· Talent Development: Coach, mentor, and develop the next generation of sales leaders\n\n· Cross-functional Leadership: Partner with Product, Marketing, Customer Success, and Channel teams to\ndeliver integrated solutions\n\n· Innovation: Champion new sales methodologies, tools, and approaches that improve team productivity\n\n\n## What You Bring\n\n\n### Required Qualifications\n\n· 12+ years of progressive B2B sales experience with at least 5 years in VP-level or equivalent leadership roles\n\n· Proven track record of building and scaling enterprise sales teams of 50+ people\n\n· Demonstrated success managing $100M+ ARR quotas and consistently exceeding targets\n\n· Deep expertise in complex, consultative sales with 6-12 month sales cycles\n\n<!-- PageBreak -->\n\n
images
None
text
text· Experience selling SaaS solutions to Fortune 500 enterprises\n\n· Strong executive presence with ability to engage C-suite buyers\n\n· Bachelor's degree required; MBA preferred\n\n\n### What Sets You Apart\n\n· Experience in CRM, cloud infrastructure, or enterprise software markets\n\n· Track record of building sales teams from early stage through scale\n\n· Expertise in account-based selling and strategic account management\n\n· Strong analytical skills with proficiency in ACME, sales analytics tools\n\n· History of developing talent - multiple direct reports promoted to leadership roles\n\n· Experience with channel/partner sales models\n\n· Passion for coaching and developing high-performing teams\n\n\n### Leadership Competencies\n\n· Strategic thinking and business acumen\n\n· Exceptional communication and executive presence\n\n· Data-driven decision making\n\n· Change management and organizational development\n\n· Cross-functional collaboration\n\n· Diversity, equity, and inclusion advocacy\n\n\n### Compensation & Benefits\n\n\n#### Total Target Compensation: $975,000\n\n· Base Salary: $325,000\n\n· Variable Compensation: $650,000 (at 100% quota attainment)\n\n· Equity: RSU grant valued at $500,000 (4-year vesting)\n\n· Sign-on Bonus: $100,000\n\n\n#### Comprehensive Benefits Package\n\n\n<table>\n<tr>\n<td>· Premium medical, dental, and vision coverage</td>\n<td>· 401(k) with 6% company match</td>\n</tr>\n<tr>\n<td>· Flexible PTO policy</td>\n<td>· $5,000 annual professional development budget</td>\n</tr>\n<tr>\n<td>· Executive coaching program</td>\n<td>· Wellness reimbursement ($1,200/year)</td>\n</tr>\n<tr>\n<td>· 8 paid volunteer days (VTO)</td>\n<td>· Paid parental leave (26 weeks primary caregiver)</td>\n</tr>\n<tr>\n<td>· Employee stock purchase plan (15% discount)</td>\n<td>· Relocation assistance available</td>\n</tr>\n</table>\n
images
None
", + "extra": {} + } + ], + "outputs": [ + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "4eNhA", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers", + "preferred_skills": "Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams", + "responsibilities": "Lead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools", + "qualifications": "12+ years of experience, Bachelor's degree required; MBA preferred", + "experience_level": "Executive Level" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive p\n │ engage C-suite buyers \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n preferred_skills │ Experience in CRM, cloud infrastructure, or enterprise software markets, Track r\n │ teams from early stage through scale, Expertise in account-based selling and str\n │ management, Strong analytical skills with proficiency in ACME, sales analytics t\n │ developing talent - multiple direct reports promoted to leadership roles, Experi\n │ channel/partner sales models, Passion for coaching and developing high-performin\n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and develop a high-performing team of 60+ enterprise sales professionals, O\n │ ARR with full P&L accountability, Develop and implement sales strategies that ac\n │ growth, Build and maintain executive relationships with C-level stakeholders, Dr\n │ through accurate forecasting and process optimization, Coach, mentor, and develo\n │ sales leaders, Partner with cross-functional teams to deliver integrated solutio\n │ methodologies and tools \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of experience, Bachelor's degree required; MBA preferred \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n experience_level │ Executive Level \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers
preferred_skillsExperience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams
responsibilitiesLead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools
qualifications12+ years of experience, Bachelor's degree required; MBA preferred
experience_levelExecutive Level
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "kind": "operator", + "pipe_code": "evaluate_match", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:45.879659Z", + "ended_at": "2026-01-09T15:22:49.710236Z", + "duration_ms": 3830 + }, + "io": { + "inputs": [ + { + "name": "cv_analysis", + "concept": "CVAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "goCJ7", + "data": { + "skills": "Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control", + "years_of_experience": 8.2, + "education": "Bachelor of Science in Graphic Design, University of Minnesota, College of Design", + "previous_roles": "Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation", + "key_achievements": "Received employee of the month award twice at Planet Beach" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n skills │ Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Lea\n │ Inventory Control \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n years_of_experience │ 8.2 \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n education │ Bachelor of Science in Graphic Design, University of Minnesota, College of De\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n previous_roles │ Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Asso\n │ Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corpo\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n key_achievements │ Received employee of the month award twice at Planet Beach \n", + "data_html": "
skillsGraphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control
years_of_experience8.2
educationBachelor of Science in Graphic Design, University of Minnesota, College of Design
previous_rolesSales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation
key_achievementsReceived employee of the month award twice at Planet Beach
", + "extra": {} + }, + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "4eNhA", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers", + "preferred_skills": "Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams", + "responsibilities": "Lead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools", + "qualifications": "12+ years of experience, Bachelor's degree required; MBA preferred", + "experience_level": "Executive Level" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive p\n │ engage C-suite buyers \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n preferred_skills │ Experience in CRM, cloud infrastructure, or enterprise software markets, Track r\n │ teams from early stage through scale, Expertise in account-based selling and str\n │ management, Strong analytical skills with proficiency in ACME, sales analytics t\n │ developing talent - multiple direct reports promoted to leadership roles, Experi\n │ channel/partner sales models, Passion for coaching and developing high-performin\n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and develop a high-performing team of 60+ enterprise sales professionals, O\n │ ARR with full P&L accountability, Develop and implement sales strategies that ac\n │ growth, Build and maintain executive relationships with C-level stakeholders, Dr\n │ through accurate forecasting and process optimization, Coach, mentor, and develo\n │ sales leaders, Partner with cross-functional teams to deliver integrated solutio\n │ methodologies and tools \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of experience, Bachelor's degree required; MBA preferred \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n experience_level │ Executive Level \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers
preferred_skillsExperience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams
responsibilitiesLead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools
qualifications12+ years of experience, Bachelor's degree required; MBA preferred
experience_levelExecutive Level
", + "extra": {} + } + ], + "outputs": [ + { + "name": "match_analysis", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "BNhCF", + "data": { + "overall_match_score": 10.0, + "matching_skills": "Customer Service, Organizational Skills, Leadership, Sales", + "missing_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA", + "experience_alignment": "The candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.", + "areas_of_concern": "The candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.", + "areas_to_explore": "Discuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n overall_match_score │ 10.0 \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n matching_skills │ Customer Service, Organizational Skills, Leadership, Sales \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n missing_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executi\n │ to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterp\n │ Track record of building sales teams from early stage through scale, Experti\n │ selling and strategic account management, Strong analytical skills with prof\n │ analytics tools, History of developing talent - multiple direct reports prom\n │ roles, Experience with channel/partner sales models, Passion for coaching an\n │ high-performing teams, 12+ years of experience, MBA \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n experience_alignment │ The candidate has 8.2 years of experience, which is below the required 12+ y\n │ executive-level position. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_of_concern │ The candidate lacks the necessary experience in SaaS sales and executive-lev\n │ which are critical for this role. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_to_explore │ Discuss the candidate's leadership experience and ability to develop teams, \n │ understanding of enterprise sales strategies. \n", + "data_html": "
overall_match_score10.0
matching_skillsCustomer Service, Organizational Skills, Leadership, Sales
missing_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA
experience_alignmentThe candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.
areas_of_concernThe candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.
areas_to_exploreDiscuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "kind": "operator", + "pipe_code": "generate_interview_questions", + "pipe_type": "PipeLLM", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:49.712219Z", + "ended_at": "2026-01-09T15:22:54.670016Z", + "duration_ms": 4957 + }, + "io": { + "inputs": [ + { + "name": "cv_analysis", + "concept": "CVAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "goCJ7", + "data": { + "skills": "Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control", + "years_of_experience": 8.2, + "education": "Bachelor of Science in Graphic Design, University of Minnesota, College of Design", + "previous_roles": "Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation", + "key_achievements": "Received employee of the month award twice at Planet Beach" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n skills │ Graphic Design, Trend Awareness, Customer Service, Organizational Skills, Lea\n │ Inventory Control \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n years_of_experience │ 8.2 \n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n education │ Bachelor of Science in Graphic Design, University of Minnesota, College of De\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n previous_roles │ Sales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Asso\n │ Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corpo\n─────────────────────┼──────────────────────────────────────────────────────────────────────────────\n key_achievements │ Received employee of the month award twice at Planet Beach \n", + "data_html": "
skillsGraphic Design, Trend Awareness, Customer Service, Organizational Skills, Leadership, Sales, Inventory Control
years_of_experience8.2
educationBachelor of Science in Graphic Design, University of Minnesota, College of Design
previous_rolesSales Associate at American Eagle, Spa Consultant at Planet Beach, Sales Associate at Heartbreaker, Fashion Representative at Victoria's Secret, Brand Ambassador at Target Corporation
key_achievementsReceived employee of the month award twice at Planet Beach
", + "extra": {} + }, + { + "name": "job_requirements", + "concept": "JobRequirements", + "content_type": null, + "preview": null, + "size": null, + "digest": "4eNhA", + "data": { + "required_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers", + "preferred_skills": "Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams", + "responsibilities": "Lead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools", + "qualifications": "12+ years of experience, Bachelor's degree required; MBA preferred", + "experience_level": "Executive Level" + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n required_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive p\n │ engage C-suite buyers \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n preferred_skills │ Experience in CRM, cloud infrastructure, or enterprise software markets, Track r\n │ teams from early stage through scale, Expertise in account-based selling and str\n │ management, Strong analytical skills with proficiency in ACME, sales analytics t\n │ developing talent - multiple direct reports promoted to leadership roles, Experi\n │ channel/partner sales models, Passion for coaching and developing high-performin\n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n responsibilities │ Lead and develop a high-performing team of 60+ enterprise sales professionals, O\n │ ARR with full P&L accountability, Develop and implement sales strategies that ac\n │ growth, Build and maintain executive relationships with C-level stakeholders, Dr\n │ through accurate forecasting and process optimization, Coach, mentor, and develo\n │ sales leaders, Partner with cross-functional teams to deliver integrated solutio\n │ methodologies and tools \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n qualifications │ 12+ years of experience, Bachelor's degree required; MBA preferred \n──────────────────┼─────────────────────────────────────────────────────────────────────────────────\n experience_level │ Executive Level \n", + "data_html": "
required_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers
preferred_skillsExperience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams
responsibilitiesLead and develop a high-performing team of 60+ enterprise sales professionals, Own and deliver $180M+ ARR with full P&L accountability, Develop and implement sales strategies that accelerate pipeline growth, Build and maintain executive relationships with C-level stakeholders, Drive operational rigor through accurate forecasting and process optimization, Coach, mentor, and develop the next generation of sales leaders, Partner with cross-functional teams to deliver integrated solutions, Champion new sales methodologies and tools
qualifications12+ years of experience, Bachelor's degree required; MBA preferred
experience_levelExecutive Level
", + "extra": {} + }, + { + "name": "match_analysis", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "BNhCF", + "data": { + "overall_match_score": 10.0, + "matching_skills": "Customer Service, Organizational Skills, Leadership, Sales", + "missing_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA", + "experience_alignment": "The candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.", + "areas_of_concern": "The candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.", + "areas_to_explore": "Discuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n overall_match_score │ 10.0 \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n matching_skills │ Customer Service, Organizational Skills, Leadership, Sales \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n missing_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executi\n │ to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterp\n │ Track record of building sales teams from early stage through scale, Experti\n │ selling and strategic account management, Strong analytical skills with prof\n │ analytics tools, History of developing talent - multiple direct reports prom\n │ roles, Experience with channel/partner sales models, Passion for coaching an\n │ high-performing teams, 12+ years of experience, MBA \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n experience_alignment │ The candidate has 8.2 years of experience, which is below the required 12+ y\n │ executive-level position. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_of_concern │ The candidate lacks the necessary experience in SaaS sales and executive-lev\n │ which are critical for this role. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_to_explore │ Discuss the candidate's leadership experience and ability to develop teams, \n │ understanding of enterprise sales strategies. \n", + "data_html": "
overall_match_score10.0
matching_skillsCustomer Service, Organizational Skills, Leadership, Sales
missing_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA
experience_alignmentThe candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.
areas_of_concernThe candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.
areas_to_exploreDiscuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.
", + "extra": {} + } + ], + "outputs": [ + { + "name": "interview_questions", + "concept": "InterviewQuestion", + "content_type": null, + "preview": null, + "size": null, + "digest": "jPjA4", + "data": { + "items": [ + { + "question_text": "Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?", + "purpose": "To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role." + }, + { + "question_text": "What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?", + "purpose": "To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position." + }, + { + "question_text": "Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?", + "purpose": "To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role." + }, + { + "question_text": "Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?", + "purpose": "To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor." + }, + { + "question_text": "What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?", + "purpose": "To investigate the candidate's passion for talent development and their history of fostering leadership within their teams." + } + ] + }, + "data_text": " 1 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Can you describe your experience in leading and developing sales teams? \n │ │ you implemented to ensure their success? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To assess the candidate's leadership experience and ability to develop h\n │ │ which is crucial for the role. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 2 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ What approaches have you used to engage C-suite executives in your previ\n │ │ provide an example of a successful engagement? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To evaluate the candidate's executive presence and ability to build rela\n │ │ high-level stakeholders, which is essential for the position. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 3 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Given your background in retail sales, how do you plan to transition you\n │ │ SaaS solutions to enterprise clients? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To explore the candidate's understanding of SaaS sales and their ability\n │ │ to meet the requirements of the role. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 4 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Can you discuss a time when you had to analyze sales data to make strate\n │ │ tools did you use, and what was the outcome? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To assess the candidate's analytical skills and familiarity with sales a\n │ │ are important for driving operational rigor. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 5 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ What is your philosophy on coaching and developing talent within a sales\n │ │ specific instance where you successfully promoted someone to a leadershi\n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To investigate the candidate's passion for talent development and their \n │ │ leadership within their teams. \n", + "data_html": "
question_textpurpose
Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role.
What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position.
Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role.
Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor.
What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?To investigate the candidate's passion for talent development and their history of fostering leadership within their teams.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:node_9", + "kind": "operator", + "pipe_code": "compose_interview_sheet", + "pipe_type": "PipeCompose", + "status": "succeeded", + "timing": { + "started_at": "2026-01-09T15:22:54.671388Z", + "ended_at": "2026-01-09T15:22:54.742871Z", + "duration_ms": 71 + }, + "io": { + "inputs": [ + { + "name": "match_analysis", + "concept": "MatchAnalysis", + "content_type": null, + "preview": null, + "size": null, + "digest": "BNhCF", + "data": { + "overall_match_score": 10.0, + "matching_skills": "Customer Service, Organizational Skills, Leadership, Sales", + "missing_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA", + "experience_alignment": "The candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.", + "areas_of_concern": "The candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.", + "areas_to_explore": "Discuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies." + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n overall_match_score │ 10.0 \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n matching_skills │ Customer Service, Organizational Skills, Leadership, Sales \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n missing_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executi\n │ to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterp\n │ Track record of building sales teams from early stage through scale, Experti\n │ selling and strategic account management, Strong analytical skills with prof\n │ analytics tools, History of developing talent - multiple direct reports prom\n │ roles, Experience with channel/partner sales models, Passion for coaching an\n │ high-performing teams, 12+ years of experience, MBA \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n experience_alignment │ The candidate has 8.2 years of experience, which is below the required 12+ y\n │ executive-level position. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_of_concern │ The candidate lacks the necessary experience in SaaS sales and executive-lev\n │ which are critical for this role. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_to_explore │ Discuss the candidate's leadership experience and ability to develop teams, \n │ understanding of enterprise sales strategies. \n", + "data_html": "
overall_match_score10.0
matching_skillsCustomer Service, Organizational Skills, Leadership, Sales
missing_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA
experience_alignmentThe candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.
areas_of_concernThe candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.
areas_to_exploreDiscuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.
", + "extra": {} + }, + { + "name": "interview_questions", + "concept": "InterviewQuestion", + "content_type": null, + "preview": null, + "size": null, + "digest": "jPjA4", + "data": { + "items": [ + { + "question_text": "Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?", + "purpose": "To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role." + }, + { + "question_text": "What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?", + "purpose": "To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position." + }, + { + "question_text": "Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?", + "purpose": "To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role." + }, + { + "question_text": "Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?", + "purpose": "To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor." + }, + { + "question_text": "What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?", + "purpose": "To investigate the candidate's passion for talent development and their history of fostering leadership within their teams." + } + ] + }, + "data_text": " 1 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Can you describe your experience in leading and developing sales teams? \n │ │ you implemented to ensure their success? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To assess the candidate's leadership experience and ability to develop h\n │ │ which is crucial for the role. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 2 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ What approaches have you used to engage C-suite executives in your previ\n │ │ provide an example of a successful engagement? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To evaluate the candidate's executive presence and ability to build rela\n │ │ high-level stakeholders, which is essential for the position. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 3 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Given your background in retail sales, how do you plan to transition you\n │ │ SaaS solutions to enterprise clients? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To explore the candidate's understanding of SaaS sales and their ability\n │ │ to meet the requirements of the role. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 4 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ Can you discuss a time when you had to analyze sales data to make strate\n │ │ tools did you use, and what was the outcome? \n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To assess the candidate's analytical skills and familiarity with sales a\n │ │ are important for driving operational rigor. \n─────────┼──────────────────────────────────────────────────────────────────────────────────────────\n 5 │ Attribute ┃ Value \n │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ question_text │ What is your philosophy on coaching and developing talent within a sales\n │ │ specific instance where you successfully promoted someone to a leadershi\n │ ───────────────┼─────────────────────────────────────────────────────────────────────────\n │ purpose │ To investigate the candidate's passion for talent development and their \n │ │ leadership within their teams. \n", + "data_html": "
question_textpurpose
Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role.
What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position.
Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role.
Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor.
What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?To investigate the candidate's passion for talent development and their history of fostering leadership within their teams.
", + "extra": {} + } + ], + "outputs": [ + { + "name": "interview_sheet", + "concept": "InterviewSheet", + "content_type": null, + "preview": null, + "size": null, + "digest": "nbqHw", + "data": { + "overall_match_score": 10.0, + "matching_skills": "Customer Service, Organizational Skills, Leadership, Sales", + "missing_skills": "Experience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA", + "experience_alignment": "The candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.", + "areas_of_concern": "The candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.", + "areas_to_explore": "Discuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.", + "questions": [ + { + "question_text": "Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?", + "purpose": "To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role." + }, + { + "question_text": "What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?", + "purpose": "To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position." + }, + { + "question_text": "Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?", + "purpose": "To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role." + }, + { + "question_text": "Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?", + "purpose": "To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor." + }, + { + "question_text": "What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?", + "purpose": "To investigate the candidate's passion for talent development and their history of fostering leadership within their teams." + } + ] + }, + "data_text": " Attribute ┃ Value \n━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n overall_match_score │ 10.0 \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n matching_skills │ Customer Service, Organizational Skills, Leadership, Sales \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n missing_skills │ Experience selling SaaS solutions to Fortune 500 enterprises, Strong executi\n │ to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterp\n │ Track record of building sales teams from early stage through scale, Experti\n │ selling and strategic account management, Strong analytical skills with prof\n │ analytics tools, History of developing talent - multiple direct reports prom\n │ roles, Experience with channel/partner sales models, Passion for coaching an\n │ high-performing teams, 12+ years of experience, MBA \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n experience_alignment │ The candidate has 8.2 years of experience, which is below the required 12+ y\n │ executive-level position. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_of_concern │ The candidate lacks the necessary experience in SaaS sales and executive-lev\n │ which are critical for this role. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n areas_to_explore │ Discuss the candidate's leadership experience and ability to develop teams, \n │ understanding of enterprise sales strategies. \n──────────────────────┼─────────────────────────────────────────────────────────────────────────────\n questions │ 1 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Can you describe your experience in leading and dev\n │ │ │ strategies have you implemented to ensure their suc\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To assess the candidate's leadership experience and\n │ │ │ high-performing teams, which is crucial for the rol\n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 2 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ What approaches have you used to engage C-suite exe\n │ │ │ Can you provide an example of a successful engageme\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To evaluate the candidate's executive presence and \n │ │ │ with high-level stakeholders, which is essential fo\n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 3 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Given your background in retail sales, how do you p\n │ │ │ to selling SaaS solutions to enterprise clients? \n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To explore the candidate's understanding of SaaS sa\n │ │ │ their skills to meet the requirements of the role. \n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 4 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ Can you discuss a time when you had to analyze sale\n │ │ │ decisions? What tools did you use, and what was the\n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To assess the candidate's analytical skills and fam\n │ │ │ tools, which are important for driving operational \n │ ──────┼─────────────────────────────────────────────────────────────────────\n │ 5 │ Attribute ┃ Value \n │ │ ━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n │ │ question_text │ What is your philosophy on coaching and developing \n │ │ │ you share a specific instance where you successfull\n │ │ │ leadership role? \n │ │ ───────────────┼────────────────────────────────────────────────────\n │ │ purpose │ To investigate the candidate's passion for talent d\n │ │ │ fostering leadership within their teams. \n", + "data_html": "
overall_match_score10.0
matching_skillsCustomer Service, Organizational Skills, Leadership, Sales
missing_skillsExperience selling SaaS solutions to Fortune 500 enterprises, Strong executive presence with ability to engage C-suite buyers, Experience in CRM, cloud infrastructure, or enterprise software markets, Track record of building sales teams from early stage through scale, Expertise in account-based selling and strategic account management, Strong analytical skills with proficiency in ACME, sales analytics tools, History of developing talent - multiple direct reports promoted to leadership roles, Experience with channel/partner sales models, Passion for coaching and developing high-performing teams, 12+ years of experience, MBA
experience_alignmentThe candidate has 8.2 years of experience, which is below the required 12+ years for this executive-level position.
areas_of_concernThe candidate lacks the necessary experience in SaaS sales and executive-level responsibilities, which are critical for this role.
areas_to_exploreDiscuss the candidate's leadership experience and ability to develop teams, as well as their understanding of enterprise sales strategies.
questions
question_textpurpose
Can you describe your experience in leading and developing sales teams? What strategies have you implemented to ensure their success?To assess the candidate's leadership experience and ability to develop high-performing teams, which is crucial for the role.
What approaches have you used to engage C-suite executives in your previous roles? Can you provide an example of a successful engagement?To evaluate the candidate's executive presence and ability to build relationships with high-level stakeholders, which is essential for the position.
Given your background in retail sales, how do you plan to transition your skills to selling SaaS solutions to enterprise clients?To explore the candidate's understanding of SaaS sales and their ability to adapt their skills to meet the requirements of the role.
Can you discuss a time when you had to analyze sales data to make strategic decisions? What tools did you use, and what was the outcome?To assess the candidate's analytical skills and familiarity with sales analytics tools, which are important for driving operational rigor.
What is your philosophy on coaching and developing talent within a sales team? Can you share a specific instance where you successfully promoted someone to a leadership role?To investigate the candidate's passion for talent development and their history of fostering leadership within their teams.
", + "extra": {} + } + ] + }, + "error": null, + "tags": {}, + "metrics": {} + } + ], + "edges": [ + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_0", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_1", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_1", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_1", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_2", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_2", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_1", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_3", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_3", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_4", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_5", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_5", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_6", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_6", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_7", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_8", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_0", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_9", + "kind": "contains", + "label": null, + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_9", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_2", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "kind": "data", + "label": "cv_pages", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_10", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_3", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_4", + "kind": "data", + "label": "job_offer_pages", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_11", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_2", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_5", + "kind": "data", + "label": "cv_pages", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_12", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_3", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_6", + "kind": "data", + "label": "job_offer_pages", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_13", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_5", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "kind": "data", + "label": "cv_analysis", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_14", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_6", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "kind": "data", + "label": "job_requirements", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_15", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_5", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "kind": "data", + "label": "cv_analysis", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_16", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_6", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "kind": "data", + "label": "job_requirements", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_17", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "kind": "data", + "label": "match_analysis", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_18", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_7", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_9", + "kind": "data", + "label": "match_analysis", + "meta": {} + }, + { + "id": "8c69028d-d006-4766-a68e-e58324a16d41:edge_19", + "source": "8c69028d-d006-4766-a68e-e58324a16d41:node_8", + "target": "8c69028d-d006-4766-a68e-e58324a16d41:node_9", + "kind": "data", + "label": "interview_questions", + "meta": {} + } + ], + "meta": {} +} \ No newline at end of file diff --git a/hidden/cv_and_offer/inputs.json b/hidden/cv_and_offer/inputs.json new file mode 100644 index 0000000..065853a --- /dev/null +++ b/hidden/cv_and_offer/inputs.json @@ -0,0 +1,14 @@ +{ + "cv_pdf": { + "concept": "native.Document", + "content": { + "url": "data/CVx5/CV-01.pdf" + } + }, + "job_offer_pdf": { + "concept": "native.Document", + "content": { + "url": "https://pipelex-web.s3.amazonaws.com/demo/Job-Offer.pdf" + } + } +} \ No newline at end of file diff --git a/hidden/cv_and_offer/mermaidflow.html b/hidden/cv_and_offer/mermaidflow.html new file mode 100644 index 0000000..13e6222 --- /dev/null +++ b/hidden/cv_and_offer/mermaidflow.html @@ -0,0 +1,830 @@ + + + + + +Pipeline: Cv Job Match + + + + + + +
+

Pipeline: Cv Job Match

+
+ + +
+
+
+
+
+

Click on data nodes (rounded pills) to view their full content

+ +
+
+ Data Content + × +
+
+
+ + + +
+
+ + + +
+
+ +
+ + + + \ No newline at end of file diff --git a/hidden/cv_and_offer/reactflow.html b/hidden/cv_and_offer/reactflow.html new file mode 100644 index 0000000..1ef522b --- /dev/null +++ b/hidden/cv_and_offer/reactflow.html @@ -0,0 +1,3924 @@ + + + + + +Pipeline: Cv Job Match + + + + + + + + + + + + + + + + + +
+
+
+ + + Pipeline: Cv Job Match +
+ +
+
+
+ +
+
+
+
+
Node Details
+
+
+ × +
+
+
+ +
Click on nodes to view details
+ + +
+
+
+
Data
+
Data Item
+
+
+ + +
+
+
+
+
+ + + +
+
+
+
+ +
+ + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/hidden/refine/refine_doc.plx b/hidden/refine/refine_doc.plx new file mode 100644 index 0000000..fdfb0cd --- /dev/null +++ b/hidden/refine/refine_doc.plx @@ -0,0 +1,119 @@ +domain = "document_extraction_refinement" +description = "Extracting document content and refining it based on quality assessment using vision models" +main_pipe = "process_document" + +[concept.ExtractionQuality] +description = "A structured assessment of how well text was extracted from a document page." + +[concept.ExtractionQuality.structure] +confidence = { type = "integer", description = "Percentage score indicating the quality of the text extraction", required = true } + +[concept.RefinedText] +description = "The final corrected and completed text content extracted from a page." +refines = "Text" + +[pipe.process_document] +type = "PipeSequence" +description = """ +Main pipeline entry point that takes a document, extracts its pages, and processes each page for quality assessment and conditional refinement +""" +inputs = { document = "Document" } +output = "RefinedText[]" +steps = [ + { pipe = "extract_pages", result = "pages" }, + { pipe = "process_all_pages", result = "processed_pages" }, +] + +[pipe.extract_pages] +type = "PipeExtract" +description = "Extract content from the document into individual pages" +inputs = { document = "Document" } +output = "Page[]" +model = "$extract-text-from-pdf" + +[pipe.process_all_pages] +type = "PipeBatch" +description = "Process each page through quality evaluation and conditional refinement" +inputs = { pages = "Page[]" } +output = "RefinedText[]" +branch_pipe_code = "process_single_page" +input_list_name = "pages" +input_item_name = "page" + +[pipe.process_single_page] +type = "PipeSequence" +description = "Evaluate extraction quality for a single page and refine if needed based on quality threshold" +inputs = { page = "Page" } +output = "RefinedText" +steps = [ + { pipe = "evaluate_extraction_quality", result = "extraction_quality" }, + { pipe = "check_quality_threshold", result = "refined_text" }, +] + +[pipe.evaluate_extraction_quality] +type = "PipeLLM" +description = """ +Analyze the extracted text from a page and determine a confidence percentage (0-100) for extraction quality +""" +inputs = { page = "Page" } +output = "ExtractionQuality" +model = "$retrieval" +system_prompt = """ +You are a document quality assessment expert. Your task is to evaluate the quality of text extraction from document pages and provide a structured assessment with a confidence score. +""" +prompt = """ +Analyze the following extracted page content and evaluate the quality of the text extraction. + +Look for signs of extraction issues such as: +- Missing or garbled characters +- Broken words or sentences +- Formatting artifacts +- Incomplete text blocks +- OCR errors + +@page + +Provide your assessment as a structured response. +""" + +[pipe.check_quality_threshold] +type = "PipeCondition" +description = "Route to vision refinement if confidence is below 98, otherwise pass through the text as-is" +inputs = { page = "Page", extraction_quality = "ExtractionQuality" } +output = "RefinedText" +expression_template = "{{ 'low_confidence' if extraction_quality.confidence < 98 else 'high_confidence' }}" +outcomes = { low_confidence = "refine_with_vision", high_confidence = "passthrough_text" } +default_outcome = "refine_with_vision" + +[pipe.passthrough_text] +type = "PipeLLM" +description = "Return the extracted text as-is since quality is sufficient (confidence >= 98)" +inputs = { page = "Page" } +output = "RefinedText" +model = "$retrieval" +prompt = """ +Return the extracted text from the following page exactly as it is, without any modifications. + +@page +""" + +[pipe.refine_with_vision] +type = "PipeLLM" +description = """ +Use vision capabilities to analyze the original page image along with the extracted text to complete and perfect it +""" +inputs = { page = "Page", extraction_quality = "ExtractionQuality" } +output = "RefinedText" +model = "$vision" +system_prompt = """ +You are a document text refinement specialist with vision capabilities. Your task is to analyze the original page image and compare it with the extracted text to identify and correct any extraction errors, missing content, or formatting issues. +""" +prompt = """ +Analyze the page image and refine the extracted text based on the extraction quality assessment. + +$page + +@extraction_quality + +Review the original page image carefully and compare it with the extracted text. Identify any missing text, OCR errors, or formatting issues. Provide the complete, corrected text that accurately represents the content visible in the page image. Be concise and output only the refined text content. +""" diff --git a/my_project/hello_world.py b/my_project/hello_world.py index 5614816..3927b1f 100644 --- a/my_project/hello_world.py +++ b/my_project/hello_world.py @@ -17,8 +17,12 @@ async def hello_world(): # Print the output pretty_print(pipe_output, title="Your first Pipelex output") + # get the generated text + generated_text = pipe_output.main_stuff_as_str + pretty_print(generated_text, title="Generated text") -# start Pipelex -Pipelex.make() -# run sample using asyncio -asyncio.run(hello_world()) + +if __name__ == "__main__": + with Pipelex.make(library_dirs=["my_project"]): + # run sample using asyncio + asyncio.run(hello_world()) diff --git a/pyproject.toml b/pyproject.toml index 1cfd5d7..f3da045 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,13 +12,18 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Operating System :: OS Independent", ] dependencies = [ - "pipelex[mistralai,anthropic,google,google-genai,bedrock,fal]==0.17.3", + "pipelex[anthropic,bedrock,docling,fal,gcp-storage,google,google-genai,huggingface,mistralai,s3]", ] +[tool.uv.sources] +# pipelex = { git = "https://github.com/Pipelex/pipelex.git", branch = "pre-release/v0.18.0b2" } +pipelex = { path = "../pipelex", editable = true } + [tool.setuptools] packages = ["my_project"] include-package-data = true diff --git a/tests/e2e/test_my_project.py b/tests/e2e/test_my_project.py index 8838acc..6183b03 100644 --- a/tests/e2e/test_my_project.py +++ b/tests/e2e/test_my_project.py @@ -1,8 +1,12 @@ +import runpy + import pytest +import my_project.hello_world + @pytest.mark.dry_runnable @pytest.mark.inference class TestMyProject: def test_hello_world(self): - import my_project.hello_world # noqa: F401 + runpy.run_path(my_project.hello_world.__file__, run_name="__main__") diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 028da5f..ab98a37 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -2,6 +2,8 @@ import pipelex.pipelex import pytest from pipelex.system.configuration.config_check import check_is_initialized +from pipelex.test_extras.shared_pytest_plugins import is_inference_disabled_in_pipelex +from pytest import FixtureRequest from rich import print from rich.console import Console from rich.traceback import Traceback @@ -15,11 +17,13 @@ def check_pipelex_initialized(): @pytest.fixture(scope="module", autouse=True) -def reset_pipelex_config_fixture(): +def reset_pipelex_config_fixture(request: FixtureRequest): # Code to run before each test print("\n[magenta]pipelex setup[/magenta]") try: - pipelex_instance = pipelex.pipelex.Pipelex.make() + pipelex_instance = pipelex.pipelex.Pipelex.make( + disable_inference=is_inference_disabled_in_pipelex(request), + ) except Exception as exc: Console().print(Traceback()) pytest.exit(f"Critical Pipelex setup error: {exc}") diff --git a/uv.lock b/uv.lock index f5923b6..516cf6d 100644 --- a/uv.lock +++ b/uv.lock @@ -2,10 +2,31 @@ version = 1 revision = 3 requires-python = ">=3.10" resolution-markers = [ - "python_full_version >= '3.11'", + "python_full_version >= '3.13'", + "python_full_version == '3.12.*'", + "python_full_version == '3.11.*'", "python_full_version < '3.11'", ] +[[package]] +name = "accelerate" +version = "1.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "huggingface-hub" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyyaml" }, + { name = "safetensors" }, + { name = "torch" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4a/8e/ac2a9566747a93f8be36ee08532eb0160558b07630a081a6056a9f89bf1d/accelerate-1.12.0.tar.gz", hash = "sha256:70988c352feb481887077d2ab845125024b2a137a5090d6d7a32b57d03a45df6", size = 398399, upload-time = "2025-11-21T11:27:46.973Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/d2/c581486aa6c4fbd7394c23c47b83fa1a919d34194e16944241daf9e762dd/accelerate-1.12.0-py3-none-any.whl", hash = "sha256:3e2091cd341423207e2f084a6654b1efcd250dc326f2a37d6dde446e07cabb11", size = 380935, upload-time = "2025-11-21T11:27:44.522Z" }, +] + [[package]] name = "aioboto3" version = "15.5.0" @@ -62,7 +83,7 @@ wheels = [ [[package]] name = "aiohttp" -version = "3.13.2" +version = "3.13.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, @@ -74,110 +95,110 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1c/ce/3b83ebba6b3207a7135e5fcaba49706f8a4b6008153b4e30540c982fae26/aiohttp-3.13.2.tar.gz", hash = "sha256:40176a52c186aefef6eb3cad2cdd30cd06e3afbe88fe8ab2af9c0b90f228daca", size = 7837994, upload-time = "2025-10-28T20:59:39.937Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/34/939730e66b716b76046dedfe0842995842fa906ccc4964bba414ff69e429/aiohttp-3.13.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2372b15a5f62ed37789a6b383ff7344fc5b9f243999b0cd9b629d8bc5f5b4155", size = 736471, upload-time = "2025-10-28T20:55:27.924Z" }, - { url = "https://files.pythonhosted.org/packages/fd/cf/dcbdf2df7f6ca72b0bb4c0b4509701f2d8942cf54e29ca197389c214c07f/aiohttp-3.13.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7f8659a48995edee7229522984bd1009c1213929c769c2daa80b40fe49a180c", size = 493985, upload-time = "2025-10-28T20:55:29.456Z" }, - { url = "https://files.pythonhosted.org/packages/9d/87/71c8867e0a1d0882dcbc94af767784c3cb381c1c4db0943ab4aae4fed65e/aiohttp-3.13.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:939ced4a7add92296b0ad38892ce62b98c619288a081170695c6babe4f50e636", size = 489274, upload-time = "2025-10-28T20:55:31.134Z" }, - { url = "https://files.pythonhosted.org/packages/38/0f/46c24e8dae237295eaadd113edd56dee96ef6462adf19b88592d44891dc5/aiohttp-3.13.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6315fb6977f1d0dd41a107c527fee2ed5ab0550b7d885bc15fee20ccb17891da", size = 1668171, upload-time = "2025-10-28T20:55:36.065Z" }, - { url = "https://files.pythonhosted.org/packages/eb/c6/4cdfb4440d0e28483681a48f69841fa5e39366347d66ef808cbdadddb20e/aiohttp-3.13.2-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6e7352512f763f760baaed2637055c49134fd1d35b37c2dedfac35bfe5cf8725", size = 1636036, upload-time = "2025-10-28T20:55:37.576Z" }, - { url = "https://files.pythonhosted.org/packages/84/37/8708cf678628216fb678ab327a4e1711c576d6673998f4f43e86e9ae90dd/aiohttp-3.13.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e09a0a06348a2dd73e7213353c90d709502d9786219f69b731f6caa0efeb46f5", size = 1727975, upload-time = "2025-10-28T20:55:39.457Z" }, - { url = "https://files.pythonhosted.org/packages/e6/2e/3ebfe12fdcb9b5f66e8a0a42dffcd7636844c8a018f261efb2419f68220b/aiohttp-3.13.2-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a09a6d073fb5789456545bdee2474d14395792faa0527887f2f4ec1a486a59d3", size = 1815823, upload-time = "2025-10-28T20:55:40.958Z" }, - { url = "https://files.pythonhosted.org/packages/a1/4f/ca2ef819488cbb41844c6cf92ca6dd15b9441e6207c58e5ae0e0fc8d70ad/aiohttp-3.13.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b59d13c443f8e049d9e94099c7e412e34610f1f49be0f230ec656a10692a5802", size = 1669374, upload-time = "2025-10-28T20:55:42.745Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fe/1fe2e1179a0d91ce09c99069684aab619bf2ccde9b20bd6ca44f8837203e/aiohttp-3.13.2-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:20db2d67985d71ca033443a1ba2001c4b5693fe09b0e29f6d9358a99d4d62a8a", size = 1555315, upload-time = "2025-10-28T20:55:44.264Z" }, - { url = "https://files.pythonhosted.org/packages/5a/2b/f3781899b81c45d7cbc7140cddb8a3481c195e7cbff8e36374759d2ab5a5/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:960c2fc686ba27b535f9fd2b52d87ecd7e4fd1cf877f6a5cba8afb5b4a8bd204", size = 1639140, upload-time = "2025-10-28T20:55:46.626Z" }, - { url = "https://files.pythonhosted.org/packages/72/27/c37e85cd3ece6f6c772e549bd5a253d0c122557b25855fb274224811e4f2/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6c00dbcf5f0d88796151e264a8eab23de2997c9303dd7c0bf622e23b24d3ce22", size = 1645496, upload-time = "2025-10-28T20:55:48.933Z" }, - { url = "https://files.pythonhosted.org/packages/66/20/3af1ab663151bd3780b123e907761cdb86ec2c4e44b2d9b195ebc91fbe37/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fed38a5edb7945f4d1bcabe2fcd05db4f6ec7e0e82560088b754f7e08d93772d", size = 1697625, upload-time = "2025-10-28T20:55:50.377Z" }, - { url = "https://files.pythonhosted.org/packages/95/eb/ae5cab15efa365e13d56b31b0d085a62600298bf398a7986f8388f73b598/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:b395bbca716c38bef3c764f187860e88c724b342c26275bc03e906142fc5964f", size = 1542025, upload-time = "2025-10-28T20:55:51.861Z" }, - { url = "https://files.pythonhosted.org/packages/e9/2d/1683e8d67ec72d911397fe4e575688d2a9b8f6a6e03c8fdc9f3fd3d4c03f/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:204ffff2426c25dfda401ba08da85f9c59525cdc42bda26660463dd1cbcfec6f", size = 1714918, upload-time = "2025-10-28T20:55:53.515Z" }, - { url = "https://files.pythonhosted.org/packages/99/a2/ffe8e0e1c57c5e542d47ffa1fcf95ef2b3ea573bf7c4d2ee877252431efc/aiohttp-3.13.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:05c4dd3c48fb5f15db31f57eb35374cb0c09afdde532e7fb70a75aede0ed30f6", size = 1656113, upload-time = "2025-10-28T20:55:55.438Z" }, - { url = "https://files.pythonhosted.org/packages/0d/42/d511aff5c3a2b06c09d7d214f508a4ad8ac7799817f7c3d23e7336b5e896/aiohttp-3.13.2-cp310-cp310-win32.whl", hash = "sha256:e574a7d61cf10351d734bcddabbe15ede0eaa8a02070d85446875dc11189a251", size = 432290, upload-time = "2025-10-28T20:55:56.96Z" }, - { url = "https://files.pythonhosted.org/packages/8b/ea/1c2eb7098b5bad4532994f2b7a8228d27674035c9b3234fe02c37469ef14/aiohttp-3.13.2-cp310-cp310-win_amd64.whl", hash = "sha256:364f55663085d658b8462a1c3f17b2b84a5c2e1ba858e1b79bff7b2e24ad1514", size = 455075, upload-time = "2025-10-28T20:55:58.373Z" }, - { url = "https://files.pythonhosted.org/packages/35/74/b321e7d7ca762638cdf8cdeceb39755d9c745aff7a64c8789be96ddf6e96/aiohttp-3.13.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4647d02df098f6434bafd7f32ad14942f05a9caa06c7016fdcc816f343997dd0", size = 743409, upload-time = "2025-10-28T20:56:00.354Z" }, - { url = "https://files.pythonhosted.org/packages/99/3d/91524b905ec473beaf35158d17f82ef5a38033e5809fe8742e3657cdbb97/aiohttp-3.13.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e3403f24bcb9c3b29113611c3c16a2a447c3953ecf86b79775e7be06f7ae7ccb", size = 497006, upload-time = "2025-10-28T20:56:01.85Z" }, - { url = "https://files.pythonhosted.org/packages/eb/d3/7f68bc02a67716fe80f063e19adbd80a642e30682ce74071269e17d2dba1/aiohttp-3.13.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:43dff14e35aba17e3d6d5ba628858fb8cb51e30f44724a2d2f0c75be492c55e9", size = 493195, upload-time = "2025-10-28T20:56:03.314Z" }, - { url = "https://files.pythonhosted.org/packages/98/31/913f774a4708775433b7375c4f867d58ba58ead833af96c8af3621a0d243/aiohttp-3.13.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e2a9ea08e8c58bb17655630198833109227dea914cd20be660f52215f6de5613", size = 1747759, upload-time = "2025-10-28T20:56:04.904Z" }, - { url = "https://files.pythonhosted.org/packages/e8/63/04efe156f4326f31c7c4a97144f82132c3bb21859b7bb84748d452ccc17c/aiohttp-3.13.2-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:53b07472f235eb80e826ad038c9d106c2f653584753f3ddab907c83f49eedead", size = 1704456, upload-time = "2025-10-28T20:56:06.986Z" }, - { url = "https://files.pythonhosted.org/packages/8e/02/4e16154d8e0a9cf4ae76f692941fd52543bbb148f02f098ca73cab9b1c1b/aiohttp-3.13.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e736c93e9c274fce6419af4aac199984d866e55f8a4cec9114671d0ea9688780", size = 1807572, upload-time = "2025-10-28T20:56:08.558Z" }, - { url = "https://files.pythonhosted.org/packages/34/58/b0583defb38689e7f06798f0285b1ffb3a6fb371f38363ce5fd772112724/aiohttp-3.13.2-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ff5e771f5dcbc81c64898c597a434f7682f2259e0cd666932a913d53d1341d1a", size = 1895954, upload-time = "2025-10-28T20:56:10.545Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f3/083907ee3437425b4e376aa58b2c915eb1a33703ec0dc30040f7ae3368c6/aiohttp-3.13.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3b6fb0c207cc661fa0bf8c66d8d9b657331ccc814f4719468af61034b478592", size = 1747092, upload-time = "2025-10-28T20:56:12.118Z" }, - { url = "https://files.pythonhosted.org/packages/ac/61/98a47319b4e425cc134e05e5f3fc512bf9a04bf65aafd9fdcda5d57ec693/aiohttp-3.13.2-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:97a0895a8e840ab3520e2288db7cace3a1981300d48babeb50e7425609e2e0ab", size = 1606815, upload-time = "2025-10-28T20:56:14.191Z" }, - { url = "https://files.pythonhosted.org/packages/97/4b/e78b854d82f66bb974189135d31fce265dee0f5344f64dd0d345158a5973/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9e8f8afb552297aca127c90cb840e9a1d4bfd6a10d7d8f2d9176e1acc69bad30", size = 1723789, upload-time = "2025-10-28T20:56:16.101Z" }, - { url = "https://files.pythonhosted.org/packages/ed/fc/9d2ccc794fc9b9acd1379d625c3a8c64a45508b5091c546dea273a41929e/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:ed2f9c7216e53c3df02264f25d824b079cc5914f9e2deba94155190ef648ee40", size = 1718104, upload-time = "2025-10-28T20:56:17.655Z" }, - { url = "https://files.pythonhosted.org/packages/66/65/34564b8765ea5c7d79d23c9113135d1dd3609173da13084830f1507d56cf/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:99c5280a329d5fa18ef30fd10c793a190d996567667908bef8a7f81f8202b948", size = 1785584, upload-time = "2025-10-28T20:56:19.238Z" }, - { url = "https://files.pythonhosted.org/packages/30/be/f6a7a426e02fc82781afd62016417b3948e2207426d90a0e478790d1c8a4/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ca6ffef405fc9c09a746cb5d019c1672cd7f402542e379afc66b370833170cf", size = 1595126, upload-time = "2025-10-28T20:56:20.836Z" }, - { url = "https://files.pythonhosted.org/packages/e5/c7/8e22d5d28f94f67d2af496f14a83b3c155d915d1fe53d94b66d425ec5b42/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:47f438b1a28e926c37632bff3c44df7d27c9b57aaf4e34b1def3c07111fdb782", size = 1800665, upload-time = "2025-10-28T20:56:22.922Z" }, - { url = "https://files.pythonhosted.org/packages/d1/11/91133c8b68b1da9fc16555706aa7276fdf781ae2bb0876c838dd86b8116e/aiohttp-3.13.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9acda8604a57bb60544e4646a4615c1866ee6c04a8edef9b8ee6fd1d8fa2ddc8", size = 1739532, upload-time = "2025-10-28T20:56:25.924Z" }, - { url = "https://files.pythonhosted.org/packages/17/6b/3747644d26a998774b21a616016620293ddefa4d63af6286f389aedac844/aiohttp-3.13.2-cp311-cp311-win32.whl", hash = "sha256:868e195e39b24aaa930b063c08bb0c17924899c16c672a28a65afded9c46c6ec", size = 431876, upload-time = "2025-10-28T20:56:27.524Z" }, - { url = "https://files.pythonhosted.org/packages/c3/63/688462108c1a00eb9f05765331c107f95ae86f6b197b865d29e930b7e462/aiohttp-3.13.2-cp311-cp311-win_amd64.whl", hash = "sha256:7fd19df530c292542636c2a9a85854fab93474396a52f1695e799186bbd7f24c", size = 456205, upload-time = "2025-10-28T20:56:29.062Z" }, - { url = "https://files.pythonhosted.org/packages/29/9b/01f00e9856d0a73260e86dd8ed0c2234a466c5c1712ce1c281548df39777/aiohttp-3.13.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b1e56bab2e12b2b9ed300218c351ee2a3d8c8fdab5b1ec6193e11a817767e47b", size = 737623, upload-time = "2025-10-28T20:56:30.797Z" }, - { url = "https://files.pythonhosted.org/packages/5a/1b/4be39c445e2b2bd0aab4ba736deb649fabf14f6757f405f0c9685019b9e9/aiohttp-3.13.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:364e25edaabd3d37b1db1f0cbcee8c73c9a3727bfa262b83e5e4cf3489a2a9dc", size = 492664, upload-time = "2025-10-28T20:56:32.708Z" }, - { url = "https://files.pythonhosted.org/packages/28/66/d35dcfea8050e131cdd731dff36434390479b4045a8d0b9d7111b0a968f1/aiohttp-3.13.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c5c94825f744694c4b8db20b71dba9a257cd2ba8e010a803042123f3a25d50d7", size = 491808, upload-time = "2025-10-28T20:56:34.57Z" }, - { url = "https://files.pythonhosted.org/packages/00/29/8e4609b93e10a853b65f8291e64985de66d4f5848c5637cddc70e98f01f8/aiohttp-3.13.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba2715d842ffa787be87cbfce150d5e88c87a98e0b62e0f5aa489169a393dbbb", size = 1738863, upload-time = "2025-10-28T20:56:36.377Z" }, - { url = "https://files.pythonhosted.org/packages/9d/fa/4ebdf4adcc0def75ced1a0d2d227577cd7b1b85beb7edad85fcc87693c75/aiohttp-3.13.2-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:585542825c4bc662221fb257889e011a5aa00f1ae4d75d1d246a5225289183e3", size = 1700586, upload-time = "2025-10-28T20:56:38.034Z" }, - { url = "https://files.pythonhosted.org/packages/da/04/73f5f02ff348a3558763ff6abe99c223381b0bace05cd4530a0258e52597/aiohttp-3.13.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:39d02cb6025fe1aabca329c5632f48c9532a3dabccd859e7e2f110668972331f", size = 1768625, upload-time = "2025-10-28T20:56:39.75Z" }, - { url = "https://files.pythonhosted.org/packages/f8/49/a825b79ffec124317265ca7d2344a86bcffeb960743487cb11988ffb3494/aiohttp-3.13.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e67446b19e014d37342f7195f592a2a948141d15a312fe0e700c2fd2f03124f6", size = 1867281, upload-time = "2025-10-28T20:56:41.471Z" }, - { url = "https://files.pythonhosted.org/packages/b9/48/adf56e05f81eac31edcfae45c90928f4ad50ef2e3ea72cb8376162a368f8/aiohttp-3.13.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4356474ad6333e41ccefd39eae869ba15a6c5299c9c01dfdcfdd5c107be4363e", size = 1752431, upload-time = "2025-10-28T20:56:43.162Z" }, - { url = "https://files.pythonhosted.org/packages/30/ab/593855356eead019a74e862f21523db09c27f12fd24af72dbc3555b9bfd9/aiohttp-3.13.2-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:eeacf451c99b4525f700f078becff32c32ec327b10dcf31306a8a52d78166de7", size = 1562846, upload-time = "2025-10-28T20:56:44.85Z" }, - { url = "https://files.pythonhosted.org/packages/39/0f/9f3d32271aa8dc35036e9668e31870a9d3b9542dd6b3e2c8a30931cb27ae/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8a9b889aeabd7a4e9af0b7f4ab5ad94d42e7ff679aaec6d0db21e3b639ad58d", size = 1699606, upload-time = "2025-10-28T20:56:46.519Z" }, - { url = "https://files.pythonhosted.org/packages/2c/3c/52d2658c5699b6ef7692a3f7128b2d2d4d9775f2a68093f74bca06cf01e1/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:fa89cb11bc71a63b69568d5b8a25c3ca25b6d54c15f907ca1c130d72f320b76b", size = 1720663, upload-time = "2025-10-28T20:56:48.528Z" }, - { url = "https://files.pythonhosted.org/packages/9b/d4/8f8f3ff1fb7fb9e3f04fcad4e89d8a1cd8fc7d05de67e3de5b15b33008ff/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8aa7c807df234f693fed0ecd507192fc97692e61fee5702cdc11155d2e5cadc8", size = 1737939, upload-time = "2025-10-28T20:56:50.77Z" }, - { url = "https://files.pythonhosted.org/packages/03/d3/ddd348f8a27a634daae39a1b8e291ff19c77867af438af844bf8b7e3231b/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:9eb3e33fdbe43f88c3c75fa608c25e7c47bbd80f48d012763cb67c47f39a7e16", size = 1555132, upload-time = "2025-10-28T20:56:52.568Z" }, - { url = "https://files.pythonhosted.org/packages/39/b8/46790692dc46218406f94374903ba47552f2f9f90dad554eed61bfb7b64c/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9434bc0d80076138ea986833156c5a48c9c7a8abb0c96039ddbb4afc93184169", size = 1764802, upload-time = "2025-10-28T20:56:54.292Z" }, - { url = "https://files.pythonhosted.org/packages/ba/e4/19ce547b58ab2a385e5f0b8aa3db38674785085abcf79b6e0edd1632b12f/aiohttp-3.13.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ff15c147b2ad66da1f2cbb0622313f2242d8e6e8f9b79b5206c84523a4473248", size = 1719512, upload-time = "2025-10-28T20:56:56.428Z" }, - { url = "https://files.pythonhosted.org/packages/70/30/6355a737fed29dcb6dfdd48682d5790cb5eab050f7b4e01f49b121d3acad/aiohttp-3.13.2-cp312-cp312-win32.whl", hash = "sha256:27e569eb9d9e95dbd55c0fc3ec3a9335defbf1d8bc1d20171a49f3c4c607b93e", size = 426690, upload-time = "2025-10-28T20:56:58.736Z" }, - { url = "https://files.pythonhosted.org/packages/0a/0d/b10ac09069973d112de6ef980c1f6bb31cb7dcd0bc363acbdad58f927873/aiohttp-3.13.2-cp312-cp312-win_amd64.whl", hash = "sha256:8709a0f05d59a71f33fd05c17fc11fcb8c30140506e13c2f5e8ee1b8964e1b45", size = 453465, upload-time = "2025-10-28T20:57:00.795Z" }, - { url = "https://files.pythonhosted.org/packages/bf/78/7e90ca79e5aa39f9694dcfd74f4720782d3c6828113bb1f3197f7e7c4a56/aiohttp-3.13.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7519bdc7dfc1940d201651b52bf5e03f5503bda45ad6eacf64dda98be5b2b6be", size = 732139, upload-time = "2025-10-28T20:57:02.455Z" }, - { url = "https://files.pythonhosted.org/packages/db/ed/1f59215ab6853fbaa5c8495fa6cbc39edfc93553426152b75d82a5f32b76/aiohttp-3.13.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:088912a78b4d4f547a1f19c099d5a506df17eacec3c6f4375e2831ec1d995742", size = 490082, upload-time = "2025-10-28T20:57:04.784Z" }, - { url = "https://files.pythonhosted.org/packages/68/7b/fe0fe0f5e05e13629d893c760465173a15ad0039c0a5b0d0040995c8075e/aiohttp-3.13.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5276807b9de9092af38ed23ce120539ab0ac955547b38563a9ba4f5b07b95293", size = 489035, upload-time = "2025-10-28T20:57:06.894Z" }, - { url = "https://files.pythonhosted.org/packages/d2/04/db5279e38471b7ac801d7d36a57d1230feeee130bbe2a74f72731b23c2b1/aiohttp-3.13.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1237c1375eaef0db4dcd7c2559f42e8af7b87ea7d295b118c60c36a6e61cb811", size = 1720387, upload-time = "2025-10-28T20:57:08.685Z" }, - { url = "https://files.pythonhosted.org/packages/31/07/8ea4326bd7dae2bd59828f69d7fdc6e04523caa55e4a70f4a8725a7e4ed2/aiohttp-3.13.2-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:96581619c57419c3d7d78703d5b78c1e5e5fc0172d60f555bdebaced82ded19a", size = 1688314, upload-time = "2025-10-28T20:57:10.693Z" }, - { url = "https://files.pythonhosted.org/packages/48/ab/3d98007b5b87ffd519d065225438cc3b668b2f245572a8cb53da5dd2b1bc/aiohttp-3.13.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a2713a95b47374169409d18103366de1050fe0ea73db358fc7a7acb2880422d4", size = 1756317, upload-time = "2025-10-28T20:57:12.563Z" }, - { url = "https://files.pythonhosted.org/packages/97/3d/801ca172b3d857fafb7b50c7c03f91b72b867a13abca982ed6b3081774ef/aiohttp-3.13.2-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:228a1cd556b3caca590e9511a89444925da87d35219a49ab5da0c36d2d943a6a", size = 1858539, upload-time = "2025-10-28T20:57:14.623Z" }, - { url = "https://files.pythonhosted.org/packages/f7/0d/4764669bdf47bd472899b3d3db91fffbe925c8e3038ec591a2fd2ad6a14d/aiohttp-3.13.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ac6cde5fba8d7d8c6ac963dbb0256a9854e9fafff52fbcc58fdf819357892c3e", size = 1739597, upload-time = "2025-10-28T20:57:16.399Z" }, - { url = "https://files.pythonhosted.org/packages/c4/52/7bd3c6693da58ba16e657eb904a5b6decfc48ecd06e9ac098591653b1566/aiohttp-3.13.2-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f2bef8237544f4e42878c61cef4e2839fee6346dc60f5739f876a9c50be7fcdb", size = 1555006, upload-time = "2025-10-28T20:57:18.288Z" }, - { url = "https://files.pythonhosted.org/packages/48/30/9586667acec5993b6f41d2ebcf96e97a1255a85f62f3c653110a5de4d346/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:16f15a4eac3bc2d76c45f7ebdd48a65d41b242eb6c31c2245463b40b34584ded", size = 1683220, upload-time = "2025-10-28T20:57:20.241Z" }, - { url = "https://files.pythonhosted.org/packages/71/01/3afe4c96854cfd7b30d78333852e8e851dceaec1c40fd00fec90c6402dd2/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:bb7fb776645af5cc58ab804c58d7eba545a97e047254a52ce89c157b5af6cd0b", size = 1712570, upload-time = "2025-10-28T20:57:22.253Z" }, - { url = "https://files.pythonhosted.org/packages/11/2c/22799d8e720f4697a9e66fd9c02479e40a49de3de2f0bbe7f9f78a987808/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:e1b4951125ec10c70802f2cb09736c895861cd39fd9dcb35107b4dc8ae6220b8", size = 1733407, upload-time = "2025-10-28T20:57:24.37Z" }, - { url = "https://files.pythonhosted.org/packages/34/cb/90f15dd029f07cebbd91f8238a8b363978b530cd128488085b5703683594/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:550bf765101ae721ee1d37d8095f47b1f220650f85fe1af37a90ce75bab89d04", size = 1550093, upload-time = "2025-10-28T20:57:26.257Z" }, - { url = "https://files.pythonhosted.org/packages/69/46/12dce9be9d3303ecbf4d30ad45a7683dc63d90733c2d9fe512be6716cd40/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fe91b87fc295973096251e2d25a811388e7d8adf3bd2b97ef6ae78bc4ac6c476", size = 1758084, upload-time = "2025-10-28T20:57:28.349Z" }, - { url = "https://files.pythonhosted.org/packages/f9/c8/0932b558da0c302ffd639fc6362a313b98fdf235dc417bc2493da8394df7/aiohttp-3.13.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e0c8e31cfcc4592cb200160344b2fb6ae0f9e4effe06c644b5a125d4ae5ebe23", size = 1716987, upload-time = "2025-10-28T20:57:30.233Z" }, - { url = "https://files.pythonhosted.org/packages/5d/8b/f5bd1a75003daed099baec373aed678f2e9b34f2ad40d85baa1368556396/aiohttp-3.13.2-cp313-cp313-win32.whl", hash = "sha256:0740f31a60848d6edb296a0df827473eede90c689b8f9f2a4cdde74889eb2254", size = 425859, upload-time = "2025-10-28T20:57:32.105Z" }, - { url = "https://files.pythonhosted.org/packages/5d/28/a8a9fc6957b2cee8902414e41816b5ab5536ecf43c3b1843c10e82c559b2/aiohttp-3.13.2-cp313-cp313-win_amd64.whl", hash = "sha256:a88d13e7ca367394908f8a276b89d04a3652044612b9a408a0bb22a5ed976a1a", size = 452192, upload-time = "2025-10-28T20:57:34.166Z" }, - { url = "https://files.pythonhosted.org/packages/9b/36/e2abae1bd815f01c957cbf7be817b3043304e1c87bad526292a0410fdcf9/aiohttp-3.13.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:2475391c29230e063ef53a66669b7b691c9bfc3f1426a0f7bcdf1216bdbac38b", size = 735234, upload-time = "2025-10-28T20:57:36.415Z" }, - { url = "https://files.pythonhosted.org/packages/ca/e3/1ee62dde9b335e4ed41db6bba02613295a0d5b41f74a783c142745a12763/aiohttp-3.13.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:f33c8748abef4d8717bb20e8fb1b3e07c6adacb7fd6beaae971a764cf5f30d61", size = 490733, upload-time = "2025-10-28T20:57:38.205Z" }, - { url = "https://files.pythonhosted.org/packages/1a/aa/7a451b1d6a04e8d15a362af3e9b897de71d86feac3babf8894545d08d537/aiohttp-3.13.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ae32f24bbfb7dbb485a24b30b1149e2f200be94777232aeadba3eecece4d0aa4", size = 491303, upload-time = "2025-10-28T20:57:40.122Z" }, - { url = "https://files.pythonhosted.org/packages/57/1e/209958dbb9b01174870f6a7538cd1f3f28274fdbc88a750c238e2c456295/aiohttp-3.13.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d7f02042c1f009ffb70067326ef183a047425bb2ff3bc434ead4dd4a4a66a2b", size = 1717965, upload-time = "2025-10-28T20:57:42.28Z" }, - { url = "https://files.pythonhosted.org/packages/08/aa/6a01848d6432f241416bc4866cae8dc03f05a5a884d2311280f6a09c73d6/aiohttp-3.13.2-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:93655083005d71cd6c072cdab54c886e6570ad2c4592139c3fb967bfc19e4694", size = 1667221, upload-time = "2025-10-28T20:57:44.869Z" }, - { url = "https://files.pythonhosted.org/packages/87/4f/36c1992432d31bbc789fa0b93c768d2e9047ec8c7177e5cd84ea85155f36/aiohttp-3.13.2-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0db1e24b852f5f664cd728db140cf11ea0e82450471232a394b3d1a540b0f906", size = 1757178, upload-time = "2025-10-28T20:57:47.216Z" }, - { url = "https://files.pythonhosted.org/packages/ac/b4/8e940dfb03b7e0f68a82b88fd182b9be0a65cb3f35612fe38c038c3112cf/aiohttp-3.13.2-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b009194665bcd128e23eaddef362e745601afa4641930848af4c8559e88f18f9", size = 1838001, upload-time = "2025-10-28T20:57:49.337Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ef/39f3448795499c440ab66084a9db7d20ca7662e94305f175a80f5b7e0072/aiohttp-3.13.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c038a8fdc8103cd51dbd986ecdce141473ffd9775a7a8057a6ed9c3653478011", size = 1716325, upload-time = "2025-10-28T20:57:51.327Z" }, - { url = "https://files.pythonhosted.org/packages/d7/51/b311500ffc860b181c05d91c59a1313bdd05c82960fdd4035a15740d431e/aiohttp-3.13.2-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:66bac29b95a00db411cd758fea0e4b9bdba6d549dfe333f9a945430f5f2cc5a6", size = 1547978, upload-time = "2025-10-28T20:57:53.554Z" }, - { url = "https://files.pythonhosted.org/packages/31/64/b9d733296ef79815226dab8c586ff9e3df41c6aff2e16c06697b2d2e6775/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4ebf9cfc9ba24a74cf0718f04aac2a3bbe745902cc7c5ebc55c0f3b5777ef213", size = 1682042, upload-time = "2025-10-28T20:57:55.617Z" }, - { url = "https://files.pythonhosted.org/packages/3f/30/43d3e0f9d6473a6db7d472104c4eff4417b1e9df01774cb930338806d36b/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a4b88ebe35ce54205c7074f7302bd08a4cb83256a3e0870c72d6f68a3aaf8e49", size = 1680085, upload-time = "2025-10-28T20:57:57.59Z" }, - { url = "https://files.pythonhosted.org/packages/16/51/c709f352c911b1864cfd1087577760ced64b3e5bee2aa88b8c0c8e2e4972/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:98c4fb90bb82b70a4ed79ca35f656f4281885be076f3f970ce315402b53099ae", size = 1728238, upload-time = "2025-10-28T20:57:59.525Z" }, - { url = "https://files.pythonhosted.org/packages/19/e2/19bd4c547092b773caeb48ff5ae4b1ae86756a0ee76c16727fcfd281404b/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:ec7534e63ae0f3759df3a1ed4fa6bc8f75082a924b590619c0dd2f76d7043caa", size = 1544395, upload-time = "2025-10-28T20:58:01.914Z" }, - { url = "https://files.pythonhosted.org/packages/cf/87/860f2803b27dfc5ed7be532832a3498e4919da61299b4a1f8eb89b8ff44d/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5b927cf9b935a13e33644cbed6c8c4b2d0f25b713d838743f8fe7191b33829c4", size = 1742965, upload-time = "2025-10-28T20:58:03.972Z" }, - { url = "https://files.pythonhosted.org/packages/67/7f/db2fc7618925e8c7a601094d5cbe539f732df4fb570740be88ed9e40e99a/aiohttp-3.13.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:88d6c017966a78c5265d996c19cdb79235be5e6412268d7e2ce7dee339471b7a", size = 1697585, upload-time = "2025-10-28T20:58:06.189Z" }, - { url = "https://files.pythonhosted.org/packages/0c/07/9127916cb09bb38284db5036036042b7b2c514c8ebaeee79da550c43a6d6/aiohttp-3.13.2-cp314-cp314-win32.whl", hash = "sha256:f7c183e786e299b5d6c49fb43a769f8eb8e04a2726a2bd5887b98b5cc2d67940", size = 431621, upload-time = "2025-10-28T20:58:08.636Z" }, - { url = "https://files.pythonhosted.org/packages/fb/41/554a8a380df6d3a2bba8a7726429a23f4ac62aaf38de43bb6d6cde7b4d4d/aiohttp-3.13.2-cp314-cp314-win_amd64.whl", hash = "sha256:fe242cd381e0fb65758faf5ad96c2e460df6ee5b2de1072fe97e4127927e00b4", size = 457627, upload-time = "2025-10-28T20:58:11Z" }, - { url = "https://files.pythonhosted.org/packages/c7/8e/3824ef98c039d3951cb65b9205a96dd2b20f22241ee17d89c5701557c826/aiohttp-3.13.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:f10d9c0b0188fe85398c61147bbd2a657d616c876863bfeff43376e0e3134673", size = 767360, upload-time = "2025-10-28T20:58:13.358Z" }, - { url = "https://files.pythonhosted.org/packages/a4/0f/6a03e3fc7595421274fa34122c973bde2d89344f8a881b728fa8c774e4f1/aiohttp-3.13.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:e7c952aefdf2460f4ae55c5e9c3e80aa72f706a6317e06020f80e96253b1accd", size = 504616, upload-time = "2025-10-28T20:58:15.339Z" }, - { url = "https://files.pythonhosted.org/packages/c6/aa/ed341b670f1bc8a6f2c6a718353d13b9546e2cef3544f573c6a1ff0da711/aiohttp-3.13.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c20423ce14771d98353d2e25e83591fa75dfa90a3c1848f3d7c68243b4fbded3", size = 509131, upload-time = "2025-10-28T20:58:17.693Z" }, - { url = "https://files.pythonhosted.org/packages/7f/f0/c68dac234189dae5c4bbccc0f96ce0cc16b76632cfc3a08fff180045cfa4/aiohttp-3.13.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e96eb1a34396e9430c19d8338d2ec33015e4a87ef2b4449db94c22412e25ccdf", size = 1864168, upload-time = "2025-10-28T20:58:20.113Z" }, - { url = "https://files.pythonhosted.org/packages/8f/65/75a9a76db8364b5d0e52a0c20eabc5d52297385d9af9c35335b924fafdee/aiohttp-3.13.2-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:23fb0783bc1a33640036465019d3bba069942616a6a2353c6907d7fe1ccdaf4e", size = 1719200, upload-time = "2025-10-28T20:58:22.583Z" }, - { url = "https://files.pythonhosted.org/packages/f5/55/8df2ed78d7f41d232f6bd3ff866b6f617026551aa1d07e2f03458f964575/aiohttp-3.13.2-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2e1a9bea6244a1d05a4e57c295d69e159a5c50d8ef16aa390948ee873478d9a5", size = 1843497, upload-time = "2025-10-28T20:58:24.672Z" }, - { url = "https://files.pythonhosted.org/packages/e9/e0/94d7215e405c5a02ccb6a35c7a3a6cfff242f457a00196496935f700cde5/aiohttp-3.13.2-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0a3d54e822688b56e9f6b5816fb3de3a3a64660efac64e4c2dc435230ad23bad", size = 1935703, upload-time = "2025-10-28T20:58:26.758Z" }, - { url = "https://files.pythonhosted.org/packages/0b/78/1eeb63c3f9b2d1015a4c02788fb543141aad0a03ae3f7a7b669b2483f8d4/aiohttp-3.13.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7a653d872afe9f33497215745da7a943d1dc15b728a9c8da1c3ac423af35178e", size = 1792738, upload-time = "2025-10-28T20:58:29.787Z" }, - { url = "https://files.pythonhosted.org/packages/41/75/aaf1eea4c188e51538c04cc568040e3082db263a57086ea74a7d38c39e42/aiohttp-3.13.2-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:56d36e80d2003fa3fc0207fac644216d8532e9504a785ef9a8fd013f84a42c61", size = 1624061, upload-time = "2025-10-28T20:58:32.529Z" }, - { url = "https://files.pythonhosted.org/packages/9b/c2/3b6034de81fbcc43de8aeb209073a2286dfb50b86e927b4efd81cf848197/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:78cd586d8331fb8e241c2dd6b2f4061778cc69e150514b39a9e28dd050475661", size = 1789201, upload-time = "2025-10-28T20:58:34.618Z" }, - { url = "https://files.pythonhosted.org/packages/c9/38/c15dcf6d4d890217dae79d7213988f4e5fe6183d43893a9cf2fe9e84ca8d/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:20b10bbfbff766294fe99987f7bb3b74fdd2f1a2905f2562132641ad434dcf98", size = 1776868, upload-time = "2025-10-28T20:58:38.835Z" }, - { url = "https://files.pythonhosted.org/packages/04/75/f74fd178ac81adf4f283a74847807ade5150e48feda6aef024403716c30c/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9ec49dff7e2b3c85cdeaa412e9d438f0ecd71676fde61ec57027dd392f00c693", size = 1790660, upload-time = "2025-10-28T20:58:41.507Z" }, - { url = "https://files.pythonhosted.org/packages/e7/80/7368bd0d06b16b3aba358c16b919e9c46cf11587dc572091031b0e9e3ef0/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:94f05348c4406450f9d73d38efb41d669ad6cd90c7ee194810d0eefbfa875a7a", size = 1617548, upload-time = "2025-10-28T20:58:43.674Z" }, - { url = "https://files.pythonhosted.org/packages/7d/4b/a6212790c50483cb3212e507378fbe26b5086d73941e1ec4b56a30439688/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:fa4dcb605c6f82a80c7f95713c2b11c3b8e9893b3ebd2bc9bde93165ed6107be", size = 1817240, upload-time = "2025-10-28T20:58:45.787Z" }, - { url = "https://files.pythonhosted.org/packages/ff/f7/ba5f0ba4ea8d8f3c32850912944532b933acbf0f3a75546b89269b9b7dde/aiohttp-3.13.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cf00e5db968c3f67eccd2778574cf64d8b27d95b237770aa32400bd7a1ca4f6c", size = 1762334, upload-time = "2025-10-28T20:58:47.936Z" }, - { url = "https://files.pythonhosted.org/packages/7e/83/1a5a1856574588b1cad63609ea9ad75b32a8353ac995d830bf5da9357364/aiohttp-3.13.2-cp314-cp314t-win32.whl", hash = "sha256:d23b5fe492b0805a50d3371e8a728a9134d8de5447dce4c885f5587294750734", size = 464685, upload-time = "2025-10-28T20:58:50.642Z" }, - { url = "https://files.pythonhosted.org/packages/9f/4d/d22668674122c08f4d56972297c51a624e64b3ed1efaa40187607a7cb66e/aiohttp-3.13.2-cp314-cp314t-win_amd64.whl", hash = "sha256:ff0a7b0a82a7ab905cbda74006318d1b12e37c797eb1b0d4eb3e316cf47f658f", size = 498093, upload-time = "2025-10-28T20:58:52.782Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/50/42/32cf8e7704ceb4481406eb87161349abb46a57fee3f008ba9cb610968646/aiohttp-3.13.3.tar.gz", hash = "sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88", size = 7844556, upload-time = "2026-01-03T17:33:05.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/d6/5aec9313ee6ea9c7cde8b891b69f4ff4001416867104580670a31daeba5b/aiohttp-3.13.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5a372fd5afd301b3a89582817fdcdb6c34124787c70dbcc616f259013e7eef7", size = 738950, upload-time = "2026-01-03T17:29:13.002Z" }, + { url = "https://files.pythonhosted.org/packages/68/03/8fa90a7e6d11ff20a18837a8e2b5dd23db01aabc475aa9271c8ad33299f5/aiohttp-3.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:147e422fd1223005c22b4fe080f5d93ced44460f5f9c105406b753612b587821", size = 496099, upload-time = "2026-01-03T17:29:15.268Z" }, + { url = "https://files.pythonhosted.org/packages/d2/23/b81f744d402510a8366b74eb420fc0cc1170d0c43daca12d10814df85f10/aiohttp-3.13.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:859bd3f2156e81dd01432f5849fc73e2243d4a487c4fd26609b1299534ee1845", size = 491072, upload-time = "2026-01-03T17:29:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/d5/e1/56d1d1c0dd334cd203dd97706ce004c1aa24b34a813b0b8daf3383039706/aiohttp-3.13.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dca68018bf48c251ba17c72ed479f4dafe9dbd5a73707ad8d28a38d11f3d42af", size = 1671588, upload-time = "2026-01-03T17:29:18.539Z" }, + { url = "https://files.pythonhosted.org/packages/5f/34/8d7f962604f4bc2b4e39eb1220dac7d4e4cba91fb9ba0474b4ecd67db165/aiohttp-3.13.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fee0c6bc7db1de362252affec009707a17478a00ec69f797d23ca256e36d5940", size = 1640334, upload-time = "2026-01-03T17:29:21.028Z" }, + { url = "https://files.pythonhosted.org/packages/94/1d/fcccf2c668d87337ddeef9881537baee13c58d8f01f12ba8a24215f2b804/aiohttp-3.13.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c048058117fd649334d81b4b526e94bde3ccaddb20463a815ced6ecbb7d11160", size = 1722656, upload-time = "2026-01-03T17:29:22.531Z" }, + { url = "https://files.pythonhosted.org/packages/aa/98/c6f3b081c4c606bc1e5f2ec102e87d6411c73a9ef3616fea6f2d5c98c062/aiohttp-3.13.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:215a685b6fbbfcf71dfe96e3eba7a6f58f10da1dfdf4889c7dd856abe430dca7", size = 1817625, upload-time = "2026-01-03T17:29:24.276Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c0/cfcc3d2e11b477f86e1af2863f3858c8850d751ce8dc39c4058a072c9e54/aiohttp-3.13.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2c184bb1fe2cbd2cefba613e9db29a5ab559323f994b6737e370d3da0ac455", size = 1672604, upload-time = "2026-01-03T17:29:26.099Z" }, + { url = "https://files.pythonhosted.org/packages/1e/77/6b4ffcbcac4c6a5d041343a756f34a6dd26174ae07f977a64fe028dda5b0/aiohttp-3.13.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:75ca857eba4e20ce9f546cd59c7007b33906a4cd48f2ff6ccf1ccfc3b646f279", size = 1554370, upload-time = "2026-01-03T17:29:28.121Z" }, + { url = "https://files.pythonhosted.org/packages/f2/f0/e3ddfa93f17d689dbe014ba048f18e0c9f9b456033b70e94349a2e9048be/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81e97251d9298386c2b7dbeb490d3d1badbdc69107fb8c9299dd04eb39bddc0e", size = 1642023, upload-time = "2026-01-03T17:29:30.002Z" }, + { url = "https://files.pythonhosted.org/packages/eb/45/c14019c9ec60a8e243d06d601b33dcc4fd92379424bde3021725859d7f99/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c0e2d366af265797506f0283487223146af57815b388623f0357ef7eac9b209d", size = 1649680, upload-time = "2026-01-03T17:29:31.782Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fd/09c9451dae5aa5c5ed756df95ff9ef549d45d4be663bafd1e4954fd836f0/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4e239d501f73d6db1522599e14b9b321a7e3b1de66ce33d53a765d975e9f4808", size = 1692407, upload-time = "2026-01-03T17:29:33.392Z" }, + { url = "https://files.pythonhosted.org/packages/a6/81/938bc2ec33c10efd6637ccb3d22f9f3160d08e8f3aa2587a2c2d5ab578eb/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:0db318f7a6f065d84cb1e02662c526294450b314a02bd9e2a8e67f0d8564ce40", size = 1543047, upload-time = "2026-01-03T17:29:34.855Z" }, + { url = "https://files.pythonhosted.org/packages/f7/23/80488ee21c8d567c83045e412e1d9b7077d27171591a4eb7822586e8c06a/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:bfc1cc2fe31a6026a8a88e4ecfb98d7f6b1fec150cfd708adbfd1d2f42257c29", size = 1715264, upload-time = "2026-01-03T17:29:36.389Z" }, + { url = "https://files.pythonhosted.org/packages/e2/83/259a8da6683182768200b368120ab3deff5370bed93880fb9a3a86299f34/aiohttp-3.13.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:af71fff7bac6bb7508956696dce8f6eec2bbb045eceb40343944b1ae62b5ef11", size = 1657275, upload-time = "2026-01-03T17:29:38.162Z" }, + { url = "https://files.pythonhosted.org/packages/3f/4f/2c41f800a0b560785c10fb316216ac058c105f9be50bdc6a285de88db625/aiohttp-3.13.3-cp310-cp310-win32.whl", hash = "sha256:37da61e244d1749798c151421602884db5270faf479cf0ef03af0ff68954c9dd", size = 434053, upload-time = "2026-01-03T17:29:40.074Z" }, + { url = "https://files.pythonhosted.org/packages/80/df/29cd63c7ecfdb65ccc12f7d808cac4fa2a19544660c06c61a4a48462de0c/aiohttp-3.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:7e63f210bc1b57ef699035f2b4b6d9ce096b5914414a49b0997c839b2bd2223c", size = 456687, upload-time = "2026-01-03T17:29:41.819Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4c/a164164834f03924d9a29dc3acd9e7ee58f95857e0b467f6d04298594ebb/aiohttp-3.13.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5b6073099fb654e0a068ae678b10feff95c5cae95bbfcbfa7af669d361a8aa6b", size = 746051, upload-time = "2026-01-03T17:29:43.287Z" }, + { url = "https://files.pythonhosted.org/packages/82/71/d5c31390d18d4f58115037c432b7e0348c60f6f53b727cad33172144a112/aiohttp-3.13.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cb93e166e6c28716c8c6aeb5f99dfb6d5ccf482d29fe9bf9a794110e6d0ab64", size = 499234, upload-time = "2026-01-03T17:29:44.822Z" }, + { url = "https://files.pythonhosted.org/packages/0e/c9/741f8ac91e14b1d2e7100690425a5b2b919a87a5075406582991fb7de920/aiohttp-3.13.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:28e027cf2f6b641693a09f631759b4d9ce9165099d2b5d92af9bd4e197690eea", size = 494979, upload-time = "2026-01-03T17:29:46.405Z" }, + { url = "https://files.pythonhosted.org/packages/75/b5/31d4d2e802dfd59f74ed47eba48869c1c21552c586d5e81a9d0d5c2ad640/aiohttp-3.13.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3b61b7169ababd7802f9568ed96142616a9118dd2be0d1866e920e77ec8fa92a", size = 1748297, upload-time = "2026-01-03T17:29:48.083Z" }, + { url = "https://files.pythonhosted.org/packages/1a/3e/eefad0ad42959f226bb79664826883f2687d602a9ae2941a18e0484a74d3/aiohttp-3.13.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:80dd4c21b0f6237676449c6baaa1039abae86b91636b6c91a7f8e61c87f89540", size = 1707172, upload-time = "2026-01-03T17:29:49.648Z" }, + { url = "https://files.pythonhosted.org/packages/c5/3a/54a64299fac2891c346cdcf2aa6803f994a2e4beeaf2e5a09dcc54acc842/aiohttp-3.13.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:65d2ccb7eabee90ce0503c17716fc77226be026dcc3e65cce859a30db715025b", size = 1805405, upload-time = "2026-01-03T17:29:51.244Z" }, + { url = "https://files.pythonhosted.org/packages/6c/70/ddc1b7169cf64075e864f64595a14b147a895a868394a48f6a8031979038/aiohttp-3.13.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5b179331a481cb5529fca8b432d8d3c7001cb217513c94cd72d668d1248688a3", size = 1899449, upload-time = "2026-01-03T17:29:53.938Z" }, + { url = "https://files.pythonhosted.org/packages/a1/7e/6815aab7d3a56610891c76ef79095677b8b5be6646aaf00f69b221765021/aiohttp-3.13.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d4c940f02f49483b18b079d1c27ab948721852b281f8b015c058100e9421dd1", size = 1748444, upload-time = "2026-01-03T17:29:55.484Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f2/073b145c4100da5511f457dc0f7558e99b2987cf72600d42b559db856fbc/aiohttp-3.13.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f9444f105664c4ce47a2a7171a2418bce5b7bae45fb610f4e2c36045d85911d3", size = 1606038, upload-time = "2026-01-03T17:29:57.179Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c1/778d011920cae03ae01424ec202c513dc69243cf2db303965615b81deeea/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:694976222c711d1d00ba131904beb60534f93966562f64440d0c9d41b8cdb440", size = 1724156, upload-time = "2026-01-03T17:29:58.914Z" }, + { url = "https://files.pythonhosted.org/packages/0e/cb/3419eabf4ec1e9ec6f242c32b689248365a1cf621891f6f0386632525494/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f33ed1a2bf1997a36661874b017f5c4b760f41266341af36febaf271d179f6d7", size = 1722340, upload-time = "2026-01-03T17:30:01.962Z" }, + { url = "https://files.pythonhosted.org/packages/7a/e5/76cf77bdbc435bf233c1f114edad39ed4177ccbfab7c329482b179cff4f4/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e636b3c5f61da31a92bf0d91da83e58fdfa96f178ba682f11d24f31944cdd28c", size = 1783041, upload-time = "2026-01-03T17:30:03.609Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d4/dd1ca234c794fd29c057ce8c0566b8ef7fd6a51069de5f06fa84b9a1971c/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:5d2d94f1f5fcbe40838ac51a6ab5704a6f9ea42e72ceda48de5e6b898521da51", size = 1596024, upload-time = "2026-01-03T17:30:05.132Z" }, + { url = "https://files.pythonhosted.org/packages/55/58/4345b5f26661a6180afa686c473620c30a66afdf120ed3dd545bbc809e85/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2be0e9ccf23e8a94f6f0650ce06042cefc6ac703d0d7ab6c7a917289f2539ad4", size = 1804590, upload-time = "2026-01-03T17:30:07.135Z" }, + { url = "https://files.pythonhosted.org/packages/7b/06/05950619af6c2df7e0a431d889ba2813c9f0129cec76f663e547a5ad56f2/aiohttp-3.13.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9af5e68ee47d6534d36791bbe9b646d2a7c7deb6fc24d7943628edfbb3581f29", size = 1740355, upload-time = "2026-01-03T17:30:09.083Z" }, + { url = "https://files.pythonhosted.org/packages/3e/80/958f16de79ba0422d7c1e284b2abd0c84bc03394fbe631d0a39ffa10e1eb/aiohttp-3.13.3-cp311-cp311-win32.whl", hash = "sha256:a2212ad43c0833a873d0fb3c63fa1bacedd4cf6af2fee62bf4b739ceec3ab239", size = 433701, upload-time = "2026-01-03T17:30:10.869Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f2/27cdf04c9851712d6c1b99df6821a6623c3c9e55956d4b1e318c337b5a48/aiohttp-3.13.3-cp311-cp311-win_amd64.whl", hash = "sha256:642f752c3eb117b105acbd87e2c143de710987e09860d674e068c4c2c441034f", size = 457678, upload-time = "2026-01-03T17:30:12.719Z" }, + { url = "https://files.pythonhosted.org/packages/a0/be/4fc11f202955a69e0db803a12a062b8379c970c7c84f4882b6da17337cc1/aiohttp-3.13.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b903a4dfee7d347e2d87697d0713be59e0b87925be030c9178c5faa58ea58d5c", size = 739732, upload-time = "2026-01-03T17:30:14.23Z" }, + { url = "https://files.pythonhosted.org/packages/97/2c/621d5b851f94fa0bb7430d6089b3aa970a9d9b75196bc93bb624b0db237a/aiohttp-3.13.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a45530014d7a1e09f4a55f4f43097ba0fd155089372e105e4bff4ca76cb1b168", size = 494293, upload-time = "2026-01-03T17:30:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/5d/43/4be01406b78e1be8320bb8316dc9c42dbab553d281c40364e0f862d5661c/aiohttp-3.13.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27234ef6d85c914f9efeb77ff616dbf4ad2380be0cda40b4db086ffc7ddd1b7d", size = 493533, upload-time = "2026-01-03T17:30:17.431Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a8/5a35dc56a06a2c90d4742cbf35294396907027f80eea696637945a106f25/aiohttp-3.13.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d32764c6c9aafb7fb55366a224756387cd50bfa720f32b88e0e6fa45b27dcf29", size = 1737839, upload-time = "2026-01-03T17:30:19.422Z" }, + { url = "https://files.pythonhosted.org/packages/bf/62/4b9eeb331da56530bf2e198a297e5303e1c1ebdceeb00fe9b568a65c5a0c/aiohttp-3.13.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b1a6102b4d3ebc07dad44fbf07b45bb600300f15b552ddf1851b5390202ea2e3", size = 1703932, upload-time = "2026-01-03T17:30:21.756Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f6/af16887b5d419e6a367095994c0b1332d154f647e7dc2bd50e61876e8e3d/aiohttp-3.13.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c014c7ea7fb775dd015b2d3137378b7be0249a448a1612268b5a90c2d81de04d", size = 1771906, upload-time = "2026-01-03T17:30:23.932Z" }, + { url = "https://files.pythonhosted.org/packages/ce/83/397c634b1bcc24292fa1e0c7822800f9f6569e32934bdeef09dae7992dfb/aiohttp-3.13.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2b8d8ddba8f95ba17582226f80e2de99c7a7948e66490ef8d947e272a93e9463", size = 1871020, upload-time = "2026-01-03T17:30:26Z" }, + { url = "https://files.pythonhosted.org/packages/86/f6/a62cbbf13f0ac80a70f71b1672feba90fdb21fd7abd8dbf25c0105fb6fa3/aiohttp-3.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ae8dd55c8e6c4257eae3a20fd2c8f41edaea5992ed67156642493b8daf3cecc", size = 1755181, upload-time = "2026-01-03T17:30:27.554Z" }, + { url = "https://files.pythonhosted.org/packages/0a/87/20a35ad487efdd3fba93d5843efdfaa62d2f1479eaafa7453398a44faf13/aiohttp-3.13.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf", size = 1561794, upload-time = "2026-01-03T17:30:29.254Z" }, + { url = "https://files.pythonhosted.org/packages/de/95/8fd69a66682012f6716e1bc09ef8a1a2a91922c5725cb904689f112309c4/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bb4f7475e359992b580559e008c598091c45b5088f28614e855e42d39c2f1033", size = 1697900, upload-time = "2026-01-03T17:30:31.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/66/7b94b3b5ba70e955ff597672dad1691333080e37f50280178967aff68657/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c19b90316ad3b24c69cd78d5c9b4f3aa4497643685901185b65166293d36a00f", size = 1728239, upload-time = "2026-01-03T17:30:32.703Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/6f72f77f9f7d74719692ab65a2a0252584bf8d5f301e2ecb4c0da734530a/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:96d604498a7c782cb15a51c406acaea70d8c027ee6b90c569baa6e7b93073679", size = 1740527, upload-time = "2026-01-03T17:30:34.695Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b4/75ec16cbbd5c01bdaf4a05b19e103e78d7ce1ef7c80867eb0ace42ff4488/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423", size = 1554489, upload-time = "2026-01-03T17:30:36.864Z" }, + { url = "https://files.pythonhosted.org/packages/52/8f/bc518c0eea29f8406dcf7ed1f96c9b48e3bc3995a96159b3fc11f9e08321/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7a4a94eb787e606d0a09404b9c38c113d3b099d508021faa615d70a0131907ce", size = 1767852, upload-time = "2026-01-03T17:30:39.433Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f2/a07a75173124f31f11ea6f863dc44e6f09afe2bca45dd4e64979490deab1/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:87797e645d9d8e222e04160ee32aa06bc5c163e8499f24db719e7852ec23093a", size = 1722379, upload-time = "2026-01-03T17:30:41.081Z" }, + { url = "https://files.pythonhosted.org/packages/3c/4a/1a3fee7c21350cac78e5c5cef711bac1b94feca07399f3d406972e2d8fcd/aiohttp-3.13.3-cp312-cp312-win32.whl", hash = "sha256:b04be762396457bef43f3597c991e192ee7da460a4953d7e647ee4b1c28e7046", size = 428253, upload-time = "2026-01-03T17:30:42.644Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b7/76175c7cb4eb73d91ad63c34e29fc4f77c9386bba4a65b53ba8e05ee3c39/aiohttp-3.13.3-cp312-cp312-win_amd64.whl", hash = "sha256:e3531d63d3bdfa7e3ac5e9b27b2dd7ec9df3206a98e0b3445fa906f233264c57", size = 455407, upload-time = "2026-01-03T17:30:44.195Z" }, + { url = "https://files.pythonhosted.org/packages/97/8a/12ca489246ca1faaf5432844adbfce7ff2cc4997733e0af120869345643a/aiohttp-3.13.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5dff64413671b0d3e7d5918ea490bdccb97a4ad29b3f311ed423200b2203e01c", size = 734190, upload-time = "2026-01-03T17:30:45.832Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/de43984c74ed1fca5c014808963cc83cb00d7bb06af228f132d33862ca76/aiohttp-3.13.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:87b9aab6d6ed88235aa2970294f496ff1a1f9adcd724d800e9b952395a80ffd9", size = 491783, upload-time = "2026-01-03T17:30:47.466Z" }, + { url = "https://files.pythonhosted.org/packages/17/f8/8dd2cf6112a5a76f81f81a5130c57ca829d101ad583ce57f889179accdda/aiohttp-3.13.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:425c126c0dc43861e22cb1c14ba4c8e45d09516d0a3ae0a3f7494b79f5f233a3", size = 490704, upload-time = "2026-01-03T17:30:49.373Z" }, + { url = "https://files.pythonhosted.org/packages/6d/40/a46b03ca03936f832bc7eaa47cfbb1ad012ba1be4790122ee4f4f8cba074/aiohttp-3.13.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f9120f7093c2a32d9647abcaf21e6ad275b4fbec5b55969f978b1a97c7c86bf", size = 1720652, upload-time = "2026-01-03T17:30:50.974Z" }, + { url = "https://files.pythonhosted.org/packages/f7/7e/917fe18e3607af92657e4285498f500dca797ff8c918bd7d90b05abf6c2a/aiohttp-3.13.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:697753042d57f4bf7122cab985bf15d0cef23c770864580f5af4f52023a56bd6", size = 1692014, upload-time = "2026-01-03T17:30:52.729Z" }, + { url = "https://files.pythonhosted.org/packages/71/b6/cefa4cbc00d315d68973b671cf105b21a609c12b82d52e5d0c9ae61d2a09/aiohttp-3.13.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6de499a1a44e7de70735d0b39f67c8f25eb3d91eb3103be99ca0fa882cdd987d", size = 1759777, upload-time = "2026-01-03T17:30:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e3/e06ee07b45e59e6d81498b591fc589629be1553abb2a82ce33efe2a7b068/aiohttp-3.13.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37239e9f9a7ea9ac5bf6b92b0260b01f8a22281996da609206a84df860bc1261", size = 1861276, upload-time = "2026-01-03T17:30:56.512Z" }, + { url = "https://files.pythonhosted.org/packages/7c/24/75d274228acf35ceeb2850b8ce04de9dd7355ff7a0b49d607ee60c29c518/aiohttp-3.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f76c1e3fe7d7c8afad7ed193f89a292e1999608170dcc9751a7462a87dfd5bc0", size = 1743131, upload-time = "2026-01-03T17:30:58.256Z" }, + { url = "https://files.pythonhosted.org/packages/04/98/3d21dde21889b17ca2eea54fdcff21b27b93f45b7bb94ca029c31ab59dc3/aiohttp-3.13.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fc290605db2a917f6e81b0e1e0796469871f5af381ce15c604a3c5c7e51cb730", size = 1556863, upload-time = "2026-01-03T17:31:00.445Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/da0c3ab1192eaf64782b03971ab4055b475d0db07b17eff925e8c93b3aa5/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4021b51936308aeea0367b8f006dc999ca02bc118a0cc78c303f50a2ff6afb91", size = 1682793, upload-time = "2026-01-03T17:31:03.024Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0f/5802ada182f575afa02cbd0ec5180d7e13a402afb7c2c03a9aa5e5d49060/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:49a03727c1bba9a97d3e93c9f93ca03a57300f484b6e935463099841261195d3", size = 1716676, upload-time = "2026-01-03T17:31:04.842Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8c/714d53bd8b5a4560667f7bbbb06b20c2382f9c7847d198370ec6526af39c/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3d9908a48eb7416dc1f4524e69f1d32e5d90e3981e4e37eb0aa1cd18f9cfa2a4", size = 1733217, upload-time = "2026-01-03T17:31:06.868Z" }, + { url = "https://files.pythonhosted.org/packages/7d/79/e2176f46d2e963facea939f5be2d26368ce543622be6f00a12844d3c991f/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2712039939ec963c237286113c68dbad80a82a4281543f3abf766d9d73228998", size = 1552303, upload-time = "2026-01-03T17:31:08.958Z" }, + { url = "https://files.pythonhosted.org/packages/ab/6a/28ed4dea1759916090587d1fe57087b03e6c784a642b85ef48217b0277ae/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7bfdc049127717581866fa4708791220970ce291c23e28ccf3922c700740fdc0", size = 1763673, upload-time = "2026-01-03T17:31:10.676Z" }, + { url = "https://files.pythonhosted.org/packages/e8/35/4a3daeb8b9fab49240d21c04d50732313295e4bd813a465d840236dd0ce1/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8057c98e0c8472d8846b9c79f56766bcc57e3e8ac7bfd510482332366c56c591", size = 1721120, upload-time = "2026-01-03T17:31:12.575Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9f/d643bb3c5fb99547323e635e251c609fbbc660d983144cfebec529e09264/aiohttp-3.13.3-cp313-cp313-win32.whl", hash = "sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf", size = 427383, upload-time = "2026-01-03T17:31:14.382Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f1/ab0395f8a79933577cdd996dd2f9aa6014af9535f65dddcf88204682fe62/aiohttp-3.13.3-cp313-cp313-win_amd64.whl", hash = "sha256:693781c45a4033d31d4187d2436f5ac701e7bbfe5df40d917736108c1cc7436e", size = 453899, upload-time = "2026-01-03T17:31:15.958Z" }, + { url = "https://files.pythonhosted.org/packages/99/36/5b6514a9f5d66f4e2597e40dea2e3db271e023eb7a5d22defe96ba560996/aiohttp-3.13.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:ea37047c6b367fd4bd632bff8077449b8fa034b69e812a18e0132a00fae6e808", size = 737238, upload-time = "2026-01-03T17:31:17.909Z" }, + { url = "https://files.pythonhosted.org/packages/f7/49/459327f0d5bcd8c6c9ca69e60fdeebc3622861e696490d8674a6d0cb90a6/aiohttp-3.13.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6fc0e2337d1a4c3e6acafda6a78a39d4c14caea625124817420abceed36e2415", size = 492292, upload-time = "2026-01-03T17:31:19.919Z" }, + { url = "https://files.pythonhosted.org/packages/e8/0b/b97660c5fd05d3495b4eb27f2d0ef18dc1dc4eff7511a9bf371397ff0264/aiohttp-3.13.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c685f2d80bb67ca8c3837823ad76196b3694b0159d232206d1e461d3d434666f", size = 493021, upload-time = "2026-01-03T17:31:21.636Z" }, + { url = "https://files.pythonhosted.org/packages/54/d4/438efabdf74e30aeceb890c3290bbaa449780583b1270b00661126b8aae4/aiohttp-3.13.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48e377758516d262bde50c2584fc6c578af272559c409eecbdd2bae1601184d6", size = 1717263, upload-time = "2026-01-03T17:31:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/71/f2/7bddc7fd612367d1459c5bcf598a9e8f7092d6580d98de0e057eb42697ad/aiohttp-3.13.3-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:34749271508078b261c4abb1767d42b8d0c0cc9449c73a4df494777dc55f0687", size = 1669107, upload-time = "2026-01-03T17:31:25.334Z" }, + { url = "https://files.pythonhosted.org/packages/00/5a/1aeaecca40e22560f97610a329e0e5efef5e0b5afdf9f857f0d93839ab2e/aiohttp-3.13.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:82611aeec80eb144416956ec85b6ca45a64d76429c1ed46ae1b5f86c6e0c9a26", size = 1760196, upload-time = "2026-01-03T17:31:27.394Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f8/0ff6992bea7bd560fc510ea1c815f87eedd745fe035589c71ce05612a19a/aiohttp-3.13.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2fff83cfc93f18f215896e3a190e8e5cb413ce01553901aca925176e7568963a", size = 1843591, upload-time = "2026-01-03T17:31:29.238Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d1/e30e537a15f53485b61f5be525f2157da719819e8377298502aebac45536/aiohttp-3.13.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bbe7d4cecacb439e2e2a8a1a7b935c25b812af7a5fd26503a66dadf428e79ec1", size = 1720277, upload-time = "2026-01-03T17:31:31.053Z" }, + { url = "https://files.pythonhosted.org/packages/84/45/23f4c451d8192f553d38d838831ebbc156907ea6e05557f39563101b7717/aiohttp-3.13.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b928f30fe49574253644b1ca44b1b8adbd903aa0da4b9054a6c20fc7f4092a25", size = 1548575, upload-time = "2026-01-03T17:31:32.87Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ed/0a42b127a43712eda7807e7892c083eadfaf8429ca8fb619662a530a3aab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7b5e8fe4de30df199155baaf64f2fcd604f4c678ed20910db8e2c66dc4b11603", size = 1679455, upload-time = "2026-01-03T17:31:34.76Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b5/c05f0c2b4b4fe2c9d55e73b6d3ed4fd6c9dc2684b1d81cbdf77e7fad9adb/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:8542f41a62bcc58fc7f11cf7c90e0ec324ce44950003feb70640fc2a9092c32a", size = 1687417, upload-time = "2026-01-03T17:31:36.699Z" }, + { url = "https://files.pythonhosted.org/packages/c9/6b/915bc5dad66aef602b9e459b5a973529304d4e89ca86999d9d75d80cbd0b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5e1d8c8b8f1d91cd08d8f4a3c2b067bfca6ec043d3ff36de0f3a715feeedf926", size = 1729968, upload-time = "2026-01-03T17:31:38.622Z" }, + { url = "https://files.pythonhosted.org/packages/11/3b/e84581290a9520024a08640b63d07673057aec5ca548177a82026187ba73/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:90455115e5da1c3c51ab619ac57f877da8fd6d73c05aacd125c5ae9819582aba", size = 1545690, upload-time = "2026-01-03T17:31:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/f5/04/0c3655a566c43fd647c81b895dfe361b9f9ad6d58c19309d45cff52d6c3b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:042e9e0bcb5fba81886c8b4fbb9a09d6b8a00245fd8d88e4d989c1f96c74164c", size = 1746390, upload-time = "2026-01-03T17:31:42.857Z" }, + { url = "https://files.pythonhosted.org/packages/1f/53/71165b26978f719c3419381514c9690bd5980e764a09440a10bb816ea4ab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2eb752b102b12a76ca02dff751a801f028b4ffbbc478840b473597fc91a9ed43", size = 1702188, upload-time = "2026-01-03T17:31:44.984Z" }, + { url = "https://files.pythonhosted.org/packages/29/a7/cbe6c9e8e136314fa1980da388a59d2f35f35395948a08b6747baebb6aa6/aiohttp-3.13.3-cp314-cp314-win32.whl", hash = "sha256:b556c85915d8efaed322bf1bdae9486aa0f3f764195a0fb6ee962e5c71ef5ce1", size = 433126, upload-time = "2026-01-03T17:31:47.463Z" }, + { url = "https://files.pythonhosted.org/packages/de/56/982704adea7d3b16614fc5936014e9af85c0e34b58f9046655817f04306e/aiohttp-3.13.3-cp314-cp314-win_amd64.whl", hash = "sha256:9bf9f7a65e7aa20dd764151fb3d616c81088f91f8df39c3893a536e279b4b984", size = 459128, upload-time = "2026-01-03T17:31:49.2Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2a/3c79b638a9c3d4658d345339d22070241ea341ed4e07b5ac60fb0f418003/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:05861afbbec40650d8a07ea324367cb93e9e8cc7762e04dd4405df99fa65159c", size = 769512, upload-time = "2026-01-03T17:31:51.134Z" }, + { url = "https://files.pythonhosted.org/packages/29/b9/3e5014d46c0ab0db8707e0ac2711ed28c4da0218c358a4e7c17bae0d8722/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2fc82186fadc4a8316768d61f3722c230e2c1dcab4200d52d2ebdf2482e47592", size = 506444, upload-time = "2026-01-03T17:31:52.85Z" }, + { url = "https://files.pythonhosted.org/packages/90/03/c1d4ef9a054e151cd7839cdc497f2638f00b93cbe8043983986630d7a80c/aiohttp-3.13.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0add0900ff220d1d5c5ebbf99ed88b0c1bbf87aa7e4262300ed1376a6b13414f", size = 510798, upload-time = "2026-01-03T17:31:54.91Z" }, + { url = "https://files.pythonhosted.org/packages/ea/76/8c1e5abbfe8e127c893fe7ead569148a4d5a799f7cf958d8c09f3eedf097/aiohttp-3.13.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:568f416a4072fbfae453dcf9a99194bbb8bdeab718e08ee13dfa2ba0e4bebf29", size = 1868835, upload-time = "2026-01-03T17:31:56.733Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ac/984c5a6f74c363b01ff97adc96a3976d9c98940b8969a1881575b279ac5d/aiohttp-3.13.3-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:add1da70de90a2569c5e15249ff76a631ccacfe198375eead4aadf3b8dc849dc", size = 1720486, upload-time = "2026-01-03T17:31:58.65Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9a/b7039c5f099c4eb632138728828b33428585031a1e658d693d41d07d89d1/aiohttp-3.13.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:10b47b7ba335d2e9b1239fa571131a87e2d8ec96b333e68b2a305e7a98b0bae2", size = 1847951, upload-time = "2026-01-03T17:32:00.989Z" }, + { url = "https://files.pythonhosted.org/packages/3c/02/3bec2b9a1ba3c19ff89a43a19324202b8eb187ca1e928d8bdac9bbdddebd/aiohttp-3.13.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3dd4dce1c718e38081c8f35f323209d4c1df7d4db4bab1b5c88a6b4d12b74587", size = 1941001, upload-time = "2026-01-03T17:32:03.122Z" }, + { url = "https://files.pythonhosted.org/packages/37/df/d879401cedeef27ac4717f6426c8c36c3091c6e9f08a9178cc87549c537f/aiohttp-3.13.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34bac00a67a812570d4a460447e1e9e06fae622946955f939051e7cc895cfab8", size = 1797246, upload-time = "2026-01-03T17:32:05.255Z" }, + { url = "https://files.pythonhosted.org/packages/8d/15/be122de1f67e6953add23335c8ece6d314ab67c8bebb3f181063010795a7/aiohttp-3.13.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a19884d2ee70b06d9204b2727a7b9f983d0c684c650254679e716b0b77920632", size = 1627131, upload-time = "2026-01-03T17:32:07.607Z" }, + { url = "https://files.pythonhosted.org/packages/12/12/70eedcac9134cfa3219ab7af31ea56bc877395b1ac30d65b1bc4b27d0438/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ca7f2bb6ba8348a3614c7918cc4bb73268c5ac2a207576b7afea19d3d9f64", size = 1795196, upload-time = "2026-01-03T17:32:09.59Z" }, + { url = "https://files.pythonhosted.org/packages/32/11/b30e1b1cd1f3054af86ebe60df96989c6a414dd87e27ad16950eee420bea/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:b0d95340658b9d2f11d9697f59b3814a9d3bb4b7a7c20b131df4bcef464037c0", size = 1782841, upload-time = "2026-01-03T17:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/88/0d/d98a9367b38912384a17e287850f5695c528cff0f14f791ce8ee2e4f7796/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1e53262fd202e4b40b70c3aff944a8155059beedc8a89bba9dc1f9ef06a1b56", size = 1795193, upload-time = "2026-01-03T17:32:13.705Z" }, + { url = "https://files.pythonhosted.org/packages/43/a5/a2dfd1f5ff5581632c7f6a30e1744deda03808974f94f6534241ef60c751/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d60ac9663f44168038586cab2157e122e46bdef09e9368b37f2d82d354c23f72", size = 1621979, upload-time = "2026-01-03T17:32:15.965Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f0/12973c382ae7c1cccbc4417e129c5bf54c374dfb85af70893646e1f0e749/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:90751b8eed69435bac9ff4e3d2f6b3af1f57e37ecb0fbeee59c0174c9e2d41df", size = 1822193, upload-time = "2026-01-03T17:32:18.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/5f/24155e30ba7f8c96918af1350eb0663e2430aad9e001c0489d89cd708ab1/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fc353029f176fd2b3ec6cfc71be166aba1936fe5d73dd1992ce289ca6647a9aa", size = 1769801, upload-time = "2026-01-03T17:32:20.25Z" }, + { url = "https://files.pythonhosted.org/packages/eb/f8/7314031ff5c10e6ece114da79b338ec17eeff3a079e53151f7e9f43c4723/aiohttp-3.13.3-cp314-cp314t-win32.whl", hash = "sha256:2e41b18a58da1e474a057b3d35248d8320029f61d70a37629535b16a0c8f3767", size = 466523, upload-time = "2026-01-03T17:32:22.215Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/278a98c715ae467624eafe375542d8ba9b4383a016df8fdefe0ae28382a7/aiohttp-3.13.3-cp314-cp314t-win_amd64.whl", hash = "sha256:44531a36aa2264a1860089ffd4dce7baf875ee5a6079d5fb42e261c704ef7344", size = 499694, upload-time = "2026-01-03T17:32:24.546Z" }, ] [[package]] @@ -213,7 +234,7 @@ wheels = [ [[package]] name = "anthropic" -version = "0.75.0" +version = "0.76.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -225,23 +246,29 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/04/1f/08e95f4b7e2d35205ae5dcbb4ae97e7d477fc521c275c02609e2931ece2d/anthropic-0.75.0.tar.gz", hash = "sha256:e8607422f4ab616db2ea5baacc215dd5f028da99ce2f022e33c7c535b29f3dfb", size = 439565, upload-time = "2025-11-24T20:41:45.28Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6e/be/d11abafaa15d6304826438170f7574d750218f49a106c54424a40cef4494/anthropic-0.76.0.tar.gz", hash = "sha256:e0cae6a368986d5cf6df743dfbb1b9519e6a9eee9c6c942ad8121c0b34416ffe", size = 495483, upload-time = "2026-01-13T18:41:14.908Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/60/1c/1cd02b7ae64302a6e06724bf80a96401d5313708651d277b1458504a1730/anthropic-0.75.0-py3-none-any.whl", hash = "sha256:ea8317271b6c15d80225a9f3c670152746e88805a7a61e14d4a374577164965b", size = 388164, upload-time = "2025-11-24T20:41:43.587Z" }, + { url = "https://files.pythonhosted.org/packages/e5/70/7b0fd9c1a738f59d3babe2b4212031c34ab7d0fda4ffef15b58a55c5bcea/anthropic-0.76.0-py3-none-any.whl", hash = "sha256:81efa3113901192af2f0fe977d3ec73fdadb1e691586306c4256cd6d5ccc331c", size = 390309, upload-time = "2026-01-13T18:41:13.483Z" }, ] +[[package]] +name = "antlr4-python3-runtime" +version = "4.9.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034, upload-time = "2021-11-06T17:52:23.524Z" } + [[package]] name = "anyio" -version = "4.12.0" +version = "4.12.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/16/ce/8a777047513153587e5434fd752e89334ac33e379aa3497db860eeb60377/anyio-4.12.0.tar.gz", hash = "sha256:73c693b567b0c55130c104d0b43a9baf3aa6a31fc6110116509f27bf75e21ec0", size = 228266, upload-time = "2025-11-28T23:37:38.911Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/9c/36c5c37947ebfb8c7f22e0eb6e4d188ee2d53aa3880f3f2744fb894f0cb1/anyio-4.12.0-py3-none-any.whl", hash = "sha256:dad2376a628f98eeca4881fc56cd06affd18f659b17a747d3ff0307ced94b1bb", size = 113362, upload-time = "2025-11-28T23:36:57.897Z" }, + { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, ] [[package]] @@ -289,6 +316,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d6/50/56cf20e2ee5127b603b81d5a69580a1a325083e2b921aa8f067da83927c0/backports_strenum-1.3.1-py3-none-any.whl", hash = "sha256:cdcfe36dc897e2615dc793b7d3097f54d359918fc448754a517e6f23044ccf83", size = 8304, upload-time = "2023-12-09T14:36:39.905Z" }, ] +[[package]] +name = "beautifulsoup4" +version = "4.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, +] + [[package]] name = "boto3" version = "1.40.61" @@ -305,16 +345,16 @@ wheels = [ [[package]] name = "boto3-stubs" -version = "1.41.5" +version = "1.42.31" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore-stubs" }, { name = "types-s3transfer" }, { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/2a/e259a37840cfbe066bf9675a9fb712fc745337bef08fbaa3dfb1ad5c21f4/boto3_stubs-1.41.5.tar.gz", hash = "sha256:514a24282147760af1ec6f9035c2c451c91c78817d18457c50d841ee52daa088", size = 100005, upload-time = "2025-11-26T20:38:19.486Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/ec/c316ec393455daeaa543f4d44779157d2e65cb340c07cd1efbf33cff414e/boto3_stubs-1.42.31.tar.gz", hash = "sha256:bb0d8c936e29381d38cb724bf52197b1fdb63811707e052e842c1223545a0df7", size = 100901, upload-time = "2026-01-20T21:24:04.797Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/13/9b140e3cfe22c6538f46f4e96ac5fa30467117321309a5fe5eea1d09daf7/boto3_stubs-1.41.5-py3-none-any.whl", hash = "sha256:016f45999d6685f8d80f07f24d3a16eab4e50ba153e6cd3398dc290bf968cbca", size = 69296, upload-time = "2025-11-26T20:38:14.254Z" }, + { url = "https://files.pythonhosted.org/packages/25/ec/2ee40e05209758b91ef665b014479becbe2af77ca9ea814447a70e84d9a9/boto3_stubs-1.42.31-py3-none-any.whl", hash = "sha256:5abda7807fb0a04ea87309d7a5ab983c856a1d339a911b92d0edcfbce91834be", size = 69781, upload-time = "2026-01-20T21:24:01.46Z" }, ] [[package]] @@ -333,32 +373,32 @@ wheels = [ [[package]] name = "botocore-stubs" -version = "1.41.6" +version = "1.42.31" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "types-awscrt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/34/7b/e8ec783105bba9800624dbfb91661a01f45baec570c5f4adac0dac64abe5/botocore_stubs-1.41.6.tar.gz", hash = "sha256:2b53574c4ea4f8d5887e516ef2208b996fd988fc2a613f676ea9144597f20cd2", size = 42421, upload-time = "2025-12-01T04:14:14.192Z" } +sdist = { url = "https://files.pythonhosted.org/packages/82/1d/5be12f86e2095b0318f95d32c724acdb6f275e59a1052b7180e58c8e52c3/botocore_stubs-1.42.31.tar.gz", hash = "sha256:e7e762e37b205c7ba79782c67cc5c35151748ce267470a70ac9c026083655d9f", size = 42413, upload-time = "2026-01-20T21:28:08.37Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/68/b6/f624f5143bc5f7a66b79fc40e67b30b9584471a6143062af420bc83ae887/botocore_stubs-1.41.6-py3-none-any.whl", hash = "sha256:859e4147b5b14dc5eb64fc84fa02424839354368a0fea41da52c7a1d06427e37", size = 66748, upload-time = "2025-12-01T04:14:12.833Z" }, + { url = "https://files.pythonhosted.org/packages/40/c9/724dfd7cb610d93899df71e70faf5626ee82c86f139b90ae70c2dab22ce3/botocore_stubs-1.42.31-py3-none-any.whl", hash = "sha256:b6ae47a39a6c185e610b7bbf087923dc83e54a52378ad74aff76a6708850d38d", size = 66760, upload-time = "2026-01-20T21:28:06.697Z" }, ] [[package]] -name = "cachetools" -version = "6.2.2" +name = "cached-property" +version = "2.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fb/44/ca1675be2a83aeee1886ab745b28cda92093066590233cc501890eb8417a/cachetools-6.2.2.tar.gz", hash = "sha256:8e6d266b25e539df852251cfd6f990b4bc3a141db73b939058d809ebd2590fc6", size = 31571, upload-time = "2025-11-13T17:42:51.465Z" } +sdist = { url = "https://files.pythonhosted.org/packages/76/4b/3d870836119dbe9a5e3c9a61af8cc1a8b69d75aea564572e385882d5aefb/cached_property-2.0.1.tar.gz", hash = "sha256:484d617105e3ee0e4f1f58725e72a8ef9e93deee462222dbd51cd91230897641", size = 10574, upload-time = "2024-10-25T15:43:55.667Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/46/eb6eca305c77a4489affe1c5d8f4cae82f285d9addd8de4ec084a7184221/cachetools-6.2.2-py3-none-any.whl", hash = "sha256:6c09c98183bf58560c97b2abfcedcbaf6a896a490f534b031b661d3723b45ace", size = 11503, upload-time = "2025-11-13T17:42:50.232Z" }, + { url = "https://files.pythonhosted.org/packages/11/0e/7d8225aab3bc1a0f5811f8e1b557aa034ac04bdf641925b30d3caf586b28/cached_property-2.0.1-py3-none-any.whl", hash = "sha256:f617d70ab1100b7bcf6e42228f9ddcb78c676ffa167278d9f730d1c2fba69ccb", size = 7428, upload-time = "2024-10-25T15:43:54.711Z" }, ] [[package]] name = "certifi" -version = "2025.11.12" +version = "2026.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, ] [[package]] @@ -480,6 +520,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] +[[package]] +name = "colorlog" +version = "6.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/61/f083b5ac52e505dfc1c624eafbf8c7589a0d7f32daa398d2e7590efa5fda/colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321", size = 17162, upload-time = "2025-10-16T16:14:11.978Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/c1/e419ef3723a074172b68aaa89c9f3de486ed4c2399e2dbd8113a4fdcaf9e/colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c", size = 11743, upload-time = "2025-10-16T16:14:10.512Z" }, +] + +[[package]] +name = "dill" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/81/e1/56027a71e31b02ddc53c7d65b01e68edf64dea2932122fe7746a516f75d5/dill-0.4.1.tar.gz", hash = "sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa", size = 187315, upload-time = "2026-01-19T02:36:56.85Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/77/dc8c558f7593132cf8fefec57c4f60c83b16941c574ac5f619abb3ae7933/dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d", size = 120019, upload-time = "2026-01-19T02:36:55.663Z" }, +] + [[package]] name = "diskcache" version = "5.6.3" @@ -507,6 +568,139 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, ] +[[package]] +name = "docling" +version = "2.69.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "accelerate" }, + { name = "beautifulsoup4" }, + { name = "certifi" }, + { name = "docling-core", extra = ["chunking"] }, + { name = "docling-ibm-models" }, + { name = "docling-parse" }, + { name = "filetype" }, + { name = "huggingface-hub" }, + { name = "lxml" }, + { name = "marko" }, + { name = "ocrmac", marker = "sys_platform == 'darwin'" }, + { name = "openpyxl" }, + { name = "pandas" }, + { name = "pillow" }, + { name = "pluggy" }, + { name = "polyfactory" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "pylatexenc" }, + { name = "pypdfium2" }, + { name = "python-docx" }, + { name = "python-pptx" }, + { name = "rapidocr" }, + { name = "requests" }, + { name = "rtree" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "scipy", version = "1.17.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "tqdm" }, + { name = "typer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/90/eb/d42bd7f9a781189f6ba2f8f6a9c5b80ca85cfde1a6052a9a41c5c48c6d8b/docling-2.69.1.tar.gz", hash = "sha256:b4a91a7874def5a4080b04fbe7b1148686b6215c4fd75d26070986dbedb8c47b", size = 267941, upload-time = "2026-01-21T12:49:20.463Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/b2/54ed8c9ebc2571d5058c6ec435f1819eb58bfcab8ef95a99fa263b4fbc60/docling-2.69.1-py3-none-any.whl", hash = "sha256:75526d2c208bb2571c685763c10d728feecb4adc453c0600877888fa8021c432", size = 286583, upload-time = "2026-01-21T12:49:19.115Z" }, +] + +[[package]] +name = "docling-core" +version = "2.60.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonref" }, + { name = "jsonschema" }, + { name = "latex2mathml" }, + { name = "pandas" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "tabulate" }, + { name = "typer" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/bd/71236cca6450e3fd0d179929e9f33c8029abb90ebac56f28e0abe766d126/docling_core-2.60.0.tar.gz", hash = "sha256:7703dfbad7e64fdf38bd3a9518ec80dd0162b5e7850a83fb572bfd88b62b8a39", size = 231644, upload-time = "2026-01-20T08:57:22.458Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/ba/f75a57d9edac3fbcb61271c818e3060e1b0e59d583c47055c7c3a307dc1e/docling_core-2.60.0-py3-none-any.whl", hash = "sha256:25499f43c9e894e6ff0be5c57a3c4fb78f87caa7808d0829fa11c056600cc2b6", size = 222100, upload-time = "2026-01-20T08:57:20.779Z" }, +] + +[package.optional-dependencies] +chunking = [ + { name = "semchunk" }, + { name = "transformers" }, + { name = "tree-sitter" }, + { name = "tree-sitter-c" }, + { name = "tree-sitter-javascript" }, + { name = "tree-sitter-python" }, + { name = "tree-sitter-typescript" }, +] + +[[package]] +name = "docling-ibm-models" +version = "3.10.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "accelerate" }, + { name = "docling-core" }, + { name = "huggingface-hub" }, + { name = "jsonlines" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "rtree" }, + { name = "safetensors", extra = ["torch"] }, + { name = "torch" }, + { name = "torchvision" }, + { name = "tqdm" }, + { name = "transformers" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/36/6335f0bfa0ed92cd4bddacf0e391e2b41707b4409de327e035f93a9e310d/docling_ibm_models-3.10.3.tar.gz", hash = "sha256:6be756e45df155a367087b93e0e5f2d65905e7e81a5f57c1d3ae57096631655a", size = 87706, upload-time = "2025-12-01T17:04:43.511Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/a8/cc3d1e8bc665a7643de1201c6460b3fd7afebb924884d4a048e26f8e5225/docling_ibm_models-3.10.3-py3-none-any.whl", hash = "sha256:e034d1398c99059998da18e38ef80af8a5d975f04de17f6e93efa075fb29cac4", size = 87356, upload-time = "2025-12-01T17:04:41.886Z" }, +] + +[[package]] +name = "docling-parse" +version = "4.7.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docling-core" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/7a/653c3b11920113217724fab9b4740f9f8964864f92a2a27590accecec5ac/docling_parse-4.7.3.tar.gz", hash = "sha256:5936e6bcb7969c2a13f38ecc75cada3b0919422dc845e96da4b0b7b3bbc394ce", size = 67646746, upload-time = "2026-01-14T14:18:19.376Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/21/98decb689c173763f9a089e221c68b36d7b67ace0759f8eb2c9ca4b98dd5/docling_parse-4.7.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:65e0653d9617d38e73bab069dc3e7960668ff4a6b0ff45a7635c3790eeed8a08", size = 14614450, upload-time = "2026-01-14T14:17:21.626Z" }, + { url = "https://files.pythonhosted.org/packages/b2/88/c7642d019b6932b294ac3aae0208b2998fc0b7690473d12b1aa56636c99f/docling_parse-4.7.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:978e7e7032760385264896871ae87cb3a04081766cc966c57e9750ce803162ac", size = 15063165, upload-time = "2026-01-14T14:17:24.337Z" }, + { url = "https://files.pythonhosted.org/packages/df/3d/a169dd9de8ed5f8edae2bbfd6528306ece67994813224bb0da7a6f694a5f/docling_parse-4.7.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1790e7e4ae202d67875c1c48fd6f8ef5c51d10b0c23157e4989b8673f2f31308", size = 15136333, upload-time = "2026-01-14T14:17:26.21Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b5/b600c4a040f57b7876878550551a8a92000ffedc58f716c384e1a09ec085/docling_parse-4.7.3-cp310-cp310-win_amd64.whl", hash = "sha256:5fc8f4770f9f6f90ba25f52451864a64394ddb158aea3a8fdda46a208c029cf6", size = 16144041, upload-time = "2026-01-14T14:17:28.108Z" }, + { url = "https://files.pythonhosted.org/packages/6c/81/dd317e0bce475153dc08a60a9a8615b1a04d4d3c9803175e6cb7b7e9b49b/docling_parse-4.7.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:66896bbe925073e4d48f18ec29dcd611a390d6b2378fae72125e77b020cd5664", size = 14615974, upload-time = "2026-01-14T14:17:30.246Z" }, + { url = "https://files.pythonhosted.org/packages/3a/b5/088590e0b32fd0a393ca419c644d1435a1c99fa6b2a87888eef4d0fdea33/docling_parse-4.7.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:281347b3e937c1a5ffa6f8774ee603b64a0899fe8a6885573dec7eb48a3421d8", size = 14981051, upload-time = "2026-01-14T14:17:32.426Z" }, + { url = "https://files.pythonhosted.org/packages/b7/63/2b6c9127924487573d5419d58ec77955f0b7c0a923c8232ad461d71039aa/docling_parse-4.7.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3d86c51f9ce35a1b40b2f410f7271d9bd5fc58e7240f4cae7fdd2cef757e671", size = 15092586, upload-time = "2026-01-14T14:17:34.634Z" }, + { url = "https://files.pythonhosted.org/packages/af/89/ed27a83eb113bdf0b0f82f3c30a0db3c005df58b236f6487b232dacdb57a/docling_parse-4.7.3-cp311-cp311-win_amd64.whl", hash = "sha256:3b04459cc97a8a4929622e341b9981e23987a63af07db599afc5e1c4d389060b", size = 16144866, upload-time = "2026-01-14T14:17:36.742Z" }, + { url = "https://files.pythonhosted.org/packages/d6/26/9d86ae12699a25b7233f76ce062253e9c14e57781e00166b792b3a9d56db/docling_parse-4.7.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d89231aa4fba3e38b80c11beb8edc07569e934c1f3935b51f57904fefe958ba5", size = 14616739, upload-time = "2026-01-14T14:17:38.567Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fd/1aebb8a7f15d658f3be858ddbbc4ef7206089d540a7df0dcd4b846b99901/docling_parse-4.7.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dffd19ed373b0da5cea124606b183489a8686c3d18643e94485be1bdda5713ea", size = 14980782, upload-time = "2026-01-14T14:17:40.659Z" }, + { url = "https://files.pythonhosted.org/packages/3e/47/a722527c9f89c65f69f8a463be4f12ad73bae18132f29d8de8b2d9f6f082/docling_parse-4.7.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc32b6f25a673e41b9a8112b6b841284f60dbac9427b7848a03b435460f74aee", size = 15092450, upload-time = "2026-01-14T14:17:42.838Z" }, + { url = "https://files.pythonhosted.org/packages/91/c7/316373a92ba42c2aeaee128fc77a34333449fe3e820b9d524e0ee396ea35/docling_parse-4.7.3-cp312-cp312-win_amd64.whl", hash = "sha256:ef691045623863624f2cb7347572d0262a53cb84940ef7dd851d9f13a2eb8833", size = 16147359, upload-time = "2026-01-14T14:17:44.906Z" }, + { url = "https://files.pythonhosted.org/packages/c9/9f/b62390c85f99436fd0c40cfcdfea2b553482696ca735e4cc0eee96b765aa/docling_parse-4.7.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:6cb4fe8c62de06b70e6b38c4bd608f41ea3e9d7154a4e05f9a3c4d8944fe3a25", size = 14616910, upload-time = "2026-01-14T14:17:47.146Z" }, + { url = "https://files.pythonhosted.org/packages/15/c4/a18d70118ff26b12021effab53d2ffe0c7e6ef378e92c35941b5557529c1/docling_parse-4.7.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9d18a5b1f7eecabed631c497a19f19d281a0d86f24bfe5d239e3df89bdc4df32", size = 14981477, upload-time = "2026-01-14T14:17:49.659Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e6/899f033d80cb2b4e182226c73c6e91660df42e8867b76a04f0c024db7cb6/docling_parse-4.7.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4a93f91f97055e19cade33bb957d83f8615f1d2a0103b89827aca16b31a3e22", size = 15092546, upload-time = "2026-01-14T14:17:51.6Z" }, + { url = "https://files.pythonhosted.org/packages/95/f3/6dbd2e9c018b44ffe1de3d0a1ea1b017ee25b2a2f21934495710beb6d4d7/docling_parse-4.7.3-cp313-cp313-win_amd64.whl", hash = "sha256:c5a416ae2e1761914ee8d7dbfbe3858e106c876b5a7fccaa3917c038e2f126ec", size = 16147305, upload-time = "2026-01-14T14:17:53.925Z" }, + { url = "https://files.pythonhosted.org/packages/c5/73/d07d205b82d516db32346a9cb833716b4b39e0c37118d50592e8d85adcd1/docling_parse-4.7.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:53bd45241dca228715800afa0f96fdc826f7c234e9effcd5cefc86026ff19301", size = 14617441, upload-time = "2026-01-14T14:17:56.315Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ae/b970af23daeb3be24241044a810197b0ddffb8d4d2d451e6dc6669b086e4/docling_parse-4.7.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ca64977a19ecd580a48f22137a30470d7ccf0995b2c25a74136c6facec7c617d", size = 14981828, upload-time = "2026-01-14T14:17:59.147Z" }, + { url = "https://files.pythonhosted.org/packages/4e/69/b0732d6b47e80c9108ed8c8ed1db880beddac3a49d68f5f5e853a90553c9/docling_parse-4.7.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29c91f78c877ae4637011efdb478f20a571e6794be924795b3469958a6401cd6", size = 15092644, upload-time = "2026-01-14T14:18:01.05Z" }, + { url = "https://files.pythonhosted.org/packages/93/2e/7ae85c9ea1e75cf485f5e2af39bf1706c49570f8856b6c345098d25a9078/docling_parse-4.7.3-cp314-cp314-win_amd64.whl", hash = "sha256:75522790df921b6be5d86cf26d184a4af97c1c65e2d22698a9516bc049c398cf", size = 16787387, upload-time = "2026-01-14T14:18:03.353Z" }, + { url = "https://files.pythonhosted.org/packages/4c/58/bcf78e156bf261de21c2ab2843f60aefd0b15217af69756a2ff0cd8287f5/docling_parse-4.7.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a6e0f9e18d808c87ce0fe1900c74a3496a42743f4bba7ed4dd83a0e6e168644a", size = 18061956, upload-time = "2026-01-14T14:18:12.96Z" }, +] + [[package]] name = "docstring-parser" version = "0.17.0" @@ -516,13 +710,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/55/e2/2537ebcff11c1ee1ff17d8d0b6f4db75873e3b0fb32c2d4a2ee31ecb310a/docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708", size = 36896, upload-time = "2025-07-21T07:35:00.684Z" }, ] +[[package]] +name = "et-xmlfile" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload-time = "2024-10-25T17:25:40.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload-time = "2024-10-25T17:25:39.051Z" }, +] + [[package]] name = "eval-type-backport" -version = "0.3.0" +version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/23/079e39571d6dd8d90d7a369ecb55ad766efb6bae4e77389629e14458c280/eval_type_backport-0.3.0.tar.gz", hash = "sha256:1638210401e184ff17f877e9a2fa076b60b5838790f4532a21761cc2be67aea1", size = 9272, upload-time = "2025-11-13T20:56:50.845Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/a3/cafafb4558fd638aadfe4121dc6cefb8d743368c085acb2f521df0f3d9d7/eval_type_backport-0.3.1.tar.gz", hash = "sha256:57e993f7b5b69d271e37482e62f74e76a0276c82490cf8e4f0dffeb6b332d5ed", size = 9445, upload-time = "2025-12-02T11:51:42.987Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/d8/2a1c638d9e0aa7e269269a1a1bf423ddd94267f1a01bbe3ad03432b67dd4/eval_type_backport-0.3.0-py3-none-any.whl", hash = "sha256:975a10a0fe333c8b6260d7fdb637698c9a16c3a9e3b6eb943fee6a6f67a37fe8", size = 6061, upload-time = "2025-11-13T20:56:49.499Z" }, + { url = "https://files.pythonhosted.org/packages/cf/22/fdc2e30d43ff853720042fa15baa3e6122722be1a7950a98233ebb55cd71/eval_type_backport-0.3.1-py3-none-any.whl", hash = "sha256:279ab641905e9f11129f56a8a78f493518515b83402b860f6f06dd7c011fdfa8", size = 6063, upload-time = "2025-12-02T11:51:41.665Z" }, ] [[package]] @@ -539,36 +742,38 @@ wheels = [ [[package]] name = "faker" -version = "38.2.0" +version = "40.1.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "tzdata" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/64/27/022d4dbd4c20567b4c294f79a133cc2f05240ea61e0d515ead18c995c249/faker-38.2.0.tar.gz", hash = "sha256:20672803db9c7cb97f9b56c18c54b915b6f1d8991f63d1d673642dc43f5ce7ab", size = 1941469, upload-time = "2025-11-19T16:37:31.892Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/77/1c3ff07b6739b9a1d23ca01ec0a90a309a33b78e345a3eb52f9ce9240e36/faker-40.1.2.tar.gz", hash = "sha256:b76a68163aa5f171d260fc24827a8349bc1db672f6a665359e8d0095e8135d30", size = 1949802, upload-time = "2026-01-13T20:51:49.917Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/93/00c94d45f55c336434a15f98d906387e87ce28f9918e4444829a8fda432d/faker-38.2.0-py3-none-any.whl", hash = "sha256:35fe4a0a79dee0dc4103a6083ee9224941e7d3594811a50e3969e547b0d2ee65", size = 1980505, upload-time = "2025-11-19T16:37:30.208Z" }, + { url = "https://files.pythonhosted.org/packages/46/ec/91a434c8a53d40c3598966621dea9c50512bec6ce8e76fa1751015e74cef/faker-40.1.2-py3-none-any.whl", hash = "sha256:93503165c165d330260e4379fd6dc07c94da90c611ed3191a0174d2ab9966a42", size = 1985633, upload-time = "2026-01-13T20:51:47.982Z" }, ] [[package]] name = "fal-client" -version = "0.9.1" +version = "0.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "httpx" }, { name = "httpx-sse" }, + { name = "msgpack" }, + { name = "websockets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b8/a1/98ab1cea4c2424ee612292bc92b07905e1a15a05584f6c263cde38e6a3a2/fal_client-0.9.1.tar.gz", hash = "sha256:c8f7f88f79c4b4c4f069be9f571be924dc7c4a6bf07c252fe0b75f3c46c8d66d", size = 17085, upload-time = "2025-11-13T18:15:09.911Z" } +sdist = { url = "https://files.pythonhosted.org/packages/44/58/223a48a4d0538e73c292086f284480be42ada14223d8067432bf5eeb7aaf/fal_client-0.11.0.tar.gz", hash = "sha256:350f8cd73f5035ae1e2678ce46beb7f9f43d0a96d43586b02cd88fd973e656e1", size = 21823, upload-time = "2026-01-05T15:22:33.606Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/57/775821a71459f2b83bbaa59452a4b1e4772f7c770de88a6f591c9d43c7c8/fal_client-0.9.1-py3-none-any.whl", hash = "sha256:8eba86c947299852c8306f685eee883ce01856543bf4344b87f65abd4b7d7622", size = 11157, upload-time = "2025-11-13T18:15:08.528Z" }, + { url = "https://files.pythonhosted.org/packages/64/67/7dd4c4b2b375cc3f072ec7bde528d7c8bafb3bcdd7df1e0758d97366a1c8/fal_client-0.11.0-py3-none-any.whl", hash = "sha256:dc4f528299aa9aeefad949e0bed0183fb78c19f0a1b7e7f85d95c859f2f694d7", size = 14771, upload-time = "2026-01-05T15:22:32.116Z" }, ] [[package]] name = "filelock" -version = "3.20.0" +version = "3.20.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/46/0028a82567109b5ef6e4d2a1f04a583fb513e6cf9527fcdd09afd817deeb/filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4", size = 18922, upload-time = "2025-10-08T18:03:50.056Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/65/ce7f1b70157833bf3cb851b556a37d4547ceafc158aa9b34b36782f23696/filelock-3.20.3.tar.gz", hash = "sha256:18c57ee915c7ec61cff0ecf7f0f869936c7c30191bb0cf406f1341778d0834e1", size = 19485, upload-time = "2026-01-09T17:55:05.421Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/91/7216b27286936c16f5b4d0c530087e4a54eead683e6b0b73dd0c64844af6/filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2", size = 16054, upload-time = "2025-10-08T18:03:48.35Z" }, + { url = "https://files.pythonhosted.org/packages/b5/36/7fb70f04bf00bc646cd5bb45aa9eddb15e19437a28b8fb2b4a5249fac770/filelock-3.20.3-py3-none-any.whl", hash = "sha256:4b0dda527ee31078689fc205ec4f1c1bf7d56cf88b6dc9426c4f230e46c2dce1", size = 16701, upload-time = "2026-01-09T17:55:04.334Z" }, ] [[package]] @@ -701,50 +906,170 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload-time = "2025-10-06T05:38:16.721Z" }, ] +[[package]] +name = "fsspec" +version = "2026.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/7d/5df2650c57d47c57232af5ef4b4fdbff182070421e405e0d62c6cdbfaa87/fsspec-2026.1.0.tar.gz", hash = "sha256:e987cb0496a0d81bba3a9d1cee62922fb395e7d4c3b575e57f547953334fe07b", size = 310496, upload-time = "2026-01-09T15:21:35.562Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/c9/97cc5aae1648dcb851958a3ddf73ccd7dbe5650d95203ecb4d7720b4cdbf/fsspec-2026.1.0-py3-none-any.whl", hash = "sha256:cb76aa913c2285a3b49bdd5fc55b1d7c708d7208126b60f2eb8194fe1b4cbdcc", size = 201838, upload-time = "2026-01-09T15:21:34.041Z" }, +] + +[[package]] +name = "google-api-core" +version = "2.29.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "googleapis-common-protos" }, + { name = "proto-plus" }, + { name = "protobuf" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/10/05572d33273292bac49c2d1785925f7bc3ff2fe50e3044cf1062c1dde32e/google_api_core-2.29.0.tar.gz", hash = "sha256:84181be0f8e6b04006df75ddfe728f24489f0af57c96a529ff7cf45bc28797f7", size = 177828, upload-time = "2026-01-08T22:21:39.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/b6/85c4d21067220b9a78cfb81f516f9725ea6befc1544ec9bd2c1acd97c324/google_api_core-2.29.0-py3-none-any.whl", hash = "sha256:d30bc60980daa36e314b5d5a3e5958b0200cb44ca8fa1be2b614e932b75a3ea9", size = 173906, upload-time = "2026-01-08T22:21:36.093Z" }, +] + [[package]] name = "google-auth" -version = "2.41.1" +version = "2.47.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cachetools" }, { name = "pyasn1-modules" }, { name = "rsa" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a8/af/5129ce5b2f9688d2fa49b463e544972a7c82b0fdb50980dafee92e121d9f/google_auth-2.41.1.tar.gz", hash = "sha256:b76b7b1f9e61f0cb7e88870d14f6a94aeef248959ef6992670efee37709cbfd2", size = 292284, upload-time = "2025-09-30T22:51:26.363Z" } +sdist = { url = "https://files.pythonhosted.org/packages/60/3c/ec64b9a275ca22fa1cd3b6e77fefcf837b0732c890aa32d2bd21313d9b33/google_auth-2.47.0.tar.gz", hash = "sha256:833229070a9dfee1a353ae9877dcd2dec069a8281a4e72e72f77d4a70ff945da", size = 323719, upload-time = "2026-01-06T21:55:31.045Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/a4/7319a2a8add4cc352be9e3efeff5e2aacee917c85ca2fa1647e29089983c/google_auth-2.41.1-py2.py3-none-any.whl", hash = "sha256:754843be95575b9a19c604a848a41be03f7f2afd8c019f716dc1f51ee41c639d", size = 221302, upload-time = "2025-09-30T22:51:24.212Z" }, + { url = "https://files.pythonhosted.org/packages/db/18/79e9008530b79527e0d5f79e7eef08d3b179b7f851cfd3a2f27822fbdfa9/google_auth-2.47.0-py3-none-any.whl", hash = "sha256:c516d68336bfde7cf0da26aab674a36fedcf04b37ac4edd59c597178760c3498", size = 234867, upload-time = "2026-01-06T21:55:28.6Z" }, +] + +[package.optional-dependencies] +requests = [ + { name = "requests" }, ] [[package]] name = "google-auth-oauthlib" -version = "1.2.3" +version = "1.2.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-auth" }, { name = "requests-oauthlib" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/86/a6/c6336a6ceb682709a4aa39e2e6b5754a458075ca92359512b6cbfcb25ae3/google_auth_oauthlib-1.2.3.tar.gz", hash = "sha256:eb09e450d3cc789ecbc2b3529cb94a713673fd5f7a22c718ad91cf75aedc2ea4", size = 21265, upload-time = "2025-10-30T21:28:19.105Z" } +sdist = { url = "https://files.pythonhosted.org/packages/90/dd/211f27c1e927e2292c2a71d5df1a2aaf261ce50ba7d50848c6ee24e20970/google_auth_oauthlib-1.2.4.tar.gz", hash = "sha256:3ca93859c6cc9003c8e12b2a0868915209d7953f05a70f4880ab57d57e56ee3e", size = 21185, upload-time = "2026-01-15T22:03:10.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/21/fb96db432d187b07756e62971c4d89bdef70259e4cfa76ee32bcc0ac97d1/google_auth_oauthlib-1.2.4-py3-none-any.whl", hash = "sha256:0e922eea5f2baacaf8867febb782e46e7b153236c21592ed76ab3ddb77ffd772", size = 19193, upload-time = "2026-01-15T22:03:09.046Z" }, +] + +[[package]] +name = "google-cloud-core" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core" }, + { name = "google-auth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/03/ef0bc99d0e0faf4fdbe67ac445e18cdaa74824fd93cd069e7bb6548cb52d/google_cloud_core-2.5.0.tar.gz", hash = "sha256:7c1b7ef5c92311717bd05301aa1a91ffbc565673d3b0b4163a52d8413a186963", size = 36027, upload-time = "2025-10-29T23:17:39.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/20/bfa472e327c8edee00f04beecc80baeddd2ab33ee0e86fd7654da49d45e9/google_cloud_core-2.5.0-py3-none-any.whl", hash = "sha256:67d977b41ae6c7211ee830c7912e41003ea8194bff15ae7d72fd6f51e57acabc", size = 29469, upload-time = "2025-10-29T23:17:38.548Z" }, +] + +[[package]] +name = "google-cloud-storage" +version = "3.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core" }, + { name = "google-auth" }, + { name = "google-cloud-core" }, + { name = "google-crc32c" }, + { name = "google-resumable-media" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/90/4398cecc2704cb066bc7dee6111a5c93c59bcd6fb751f0541315655774a8/google_cloud_storage-3.8.0.tar.gz", hash = "sha256:cc67952dce84ebc9d44970e24647a58260630b7b64d72360cedaf422d6727f28", size = 17273792, upload-time = "2026-01-14T00:45:31.289Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/07/a54c100da461ffc5968457823fcc665a48fb4b875c68bcfecbfe24a10dbe/google_auth_oauthlib-1.2.3-py3-none-any.whl", hash = "sha256:7c0940e037677f25e71999607493640d071212e7f3c15aa0febea4c47a5a0680", size = 19184, upload-time = "2025-10-30T21:28:17.88Z" }, + { url = "https://files.pythonhosted.org/packages/11/db/326279870d349fb9592263343dca4ad76088c17c88ba97b0f64c1088276c/google_cloud_storage-3.8.0-py3-none-any.whl", hash = "sha256:78cfeae7cac2ca9441d0d0271c2eb4ebfa21aa4c6944dd0ccac0389e81d955a7", size = 312430, upload-time = "2026-01-14T00:45:28.689Z" }, +] + +[[package]] +name = "google-crc32c" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/41/4b9c02f99e4c5fb477122cd5437403b552873f014616ac1d19ac8221a58d/google_crc32c-1.8.0.tar.gz", hash = "sha256:a428e25fb7691024de47fecfbff7ff957214da51eddded0da0ae0e0f03a2cf79", size = 14192, upload-time = "2025-12-16T00:35:25.142Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/ac/6f7bc93886a823ab545948c2dd48143027b2355ad1944c7cf852b338dc91/google_crc32c-1.8.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0470b8c3d73b5f4e3300165498e4cf25221c7eb37f1159e221d1825b6df8a7ff", size = 31296, upload-time = "2025-12-16T00:19:07.261Z" }, + { url = "https://files.pythonhosted.org/packages/f7/97/a5accde175dee985311d949cfcb1249dcbb290f5ec83c994ea733311948f/google_crc32c-1.8.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:119fcd90c57c89f30040b47c211acee231b25a45d225e3225294386f5d258288", size = 30870, upload-time = "2025-12-16T00:29:17.669Z" }, + { url = "https://files.pythonhosted.org/packages/3d/63/bec827e70b7a0d4094e7476f863c0dbd6b5f0f1f91d9c9b32b76dcdfeb4e/google_crc32c-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6f35aaffc8ccd81ba3162443fabb920e65b1f20ab1952a31b13173a67811467d", size = 33214, upload-time = "2025-12-16T00:40:19.618Z" }, + { url = "https://files.pythonhosted.org/packages/63/bc/11b70614df04c289128d782efc084b9035ef8466b3d0a8757c1b6f5cf7ac/google_crc32c-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:864abafe7d6e2c4c66395c1eb0fe12dc891879769b52a3d56499612ca93b6092", size = 33589, upload-time = "2025-12-16T00:40:20.7Z" }, + { url = "https://files.pythonhosted.org/packages/3e/00/a08a4bc24f1261cc5b0f47312d8aebfbe4b53c2e6307f1b595605eed246b/google_crc32c-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:db3fe8eaf0612fc8b20fa21a5f25bd785bc3cd5be69f8f3412b0ac2ffd49e733", size = 34437, upload-time = "2025-12-16T00:35:19.437Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ef/21ccfaab3d5078d41efe8612e0ed0bfc9ce22475de074162a91a25f7980d/google_crc32c-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8", size = 31298, upload-time = "2025-12-16T00:20:32.241Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b8/f8413d3f4b676136e965e764ceedec904fe38ae8de0cdc52a12d8eb1096e/google_crc32c-1.8.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:86cfc00fe45a0ac7359e5214a1704e51a99e757d0272554874f419f79838c5f7", size = 30872, upload-time = "2025-12-16T00:33:58.785Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fd/33aa4ec62b290477181c55bb1c9302c9698c58c0ce9a6ab4874abc8b0d60/google_crc32c-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:19b40d637a54cb71e0829179f6cb41835f0fbd9e8eb60552152a8b52c36cbe15", size = 33243, upload-time = "2025-12-16T00:40:21.46Z" }, + { url = "https://files.pythonhosted.org/packages/71/03/4820b3bd99c9653d1a5210cb32f9ba4da9681619b4d35b6a052432df4773/google_crc32c-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:17446feb05abddc187e5441a45971b8394ea4c1b6efd88ab0af393fd9e0a156a", size = 33608, upload-time = "2025-12-16T00:40:22.204Z" }, + { url = "https://files.pythonhosted.org/packages/7c/43/acf61476a11437bf9733fb2f70599b1ced11ec7ed9ea760fdd9a77d0c619/google_crc32c-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:71734788a88f551fbd6a97be9668a0020698e07b2bf5b3aa26a36c10cdfb27b2", size = 34439, upload-time = "2025-12-16T00:35:20.458Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5f/7307325b1198b59324c0fa9807cafb551afb65e831699f2ce211ad5c8240/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:4b8286b659c1335172e39563ab0a768b8015e88e08329fa5321f774275fc3113", size = 31300, upload-time = "2025-12-16T00:21:56.723Z" }, + { url = "https://files.pythonhosted.org/packages/21/8e/58c0d5d86e2220e6a37befe7e6a94dd2f6006044b1a33edf1ff6d9f7e319/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2a3dc3318507de089c5384cc74d54318401410f82aa65b2d9cdde9d297aca7cb", size = 30867, upload-time = "2025-12-16T00:38:31.302Z" }, + { url = "https://files.pythonhosted.org/packages/ce/a9/a780cc66f86335a6019f557a8aaca8fbb970728f0efd2430d15ff1beae0e/google_crc32c-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14f87e04d613dfa218d6135e81b78272c3b904e2a7053b841481b38a7d901411", size = 33364, upload-time = "2025-12-16T00:40:22.96Z" }, + { url = "https://files.pythonhosted.org/packages/21/3f/3457ea803db0198c9aaca2dd373750972ce28a26f00544b6b85088811939/google_crc32c-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb5c869c2923d56cb0c8e6bcdd73c009c36ae39b652dbe46a05eb4ef0ad01454", size = 33740, upload-time = "2025-12-16T00:40:23.96Z" }, + { url = "https://files.pythonhosted.org/packages/df/c0/87c2073e0c72515bb8733d4eef7b21548e8d189f094b5dad20b0ecaf64f6/google_crc32c-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:3cc0c8912038065eafa603b238abf252e204accab2a704c63b9e14837a854962", size = 34437, upload-time = "2025-12-16T00:35:21.395Z" }, + { url = "https://files.pythonhosted.org/packages/d1/db/000f15b41724589b0e7bc24bc7a8967898d8d3bc8caf64c513d91ef1f6c0/google_crc32c-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:3ebb04528e83b2634857f43f9bb8ef5b2bbe7f10f140daeb01b58f972d04736b", size = 31297, upload-time = "2025-12-16T00:23:20.709Z" }, + { url = "https://files.pythonhosted.org/packages/d7/0d/8ebed0c39c53a7e838e2a486da8abb0e52de135f1b376ae2f0b160eb4c1a/google_crc32c-1.8.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:450dc98429d3e33ed2926fc99ee81001928d63460f8538f21a5d6060912a8e27", size = 30867, upload-time = "2025-12-16T00:43:14.628Z" }, + { url = "https://files.pythonhosted.org/packages/ce/42/b468aec74a0354b34c8cbf748db20d6e350a68a2b0912e128cabee49806c/google_crc32c-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3b9776774b24ba76831609ffbabce8cdf6fa2bd5e9df37b594221c7e333a81fa", size = 33344, upload-time = "2025-12-16T00:40:24.742Z" }, + { url = "https://files.pythonhosted.org/packages/1c/e8/b33784d6fc77fb5062a8a7854e43e1e618b87d5ddf610a88025e4de6226e/google_crc32c-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:89c17d53d75562edfff86679244830599ee0a48efc216200691de8b02ab6b2b8", size = 33694, upload-time = "2025-12-16T00:40:25.505Z" }, + { url = "https://files.pythonhosted.org/packages/92/b1/d3cbd4d988afb3d8e4db94ca953df429ed6db7282ed0e700d25e6c7bfc8d/google_crc32c-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:57a50a9035b75643996fbf224d6661e386c7162d1dfdab9bc4ca790947d1007f", size = 34435, upload-time = "2025-12-16T00:35:22.107Z" }, + { url = "https://files.pythonhosted.org/packages/21/88/8ecf3c2b864a490b9e7010c84fd203ec8cf3b280651106a3a74dd1b0ca72/google_crc32c-1.8.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:e6584b12cb06796d285d09e33f63309a09368b9d806a551d8036a4207ea43697", size = 31301, upload-time = "2025-12-16T00:24:48.527Z" }, + { url = "https://files.pythonhosted.org/packages/36/c6/f7ff6c11f5ca215d9f43d3629163727a272eabc356e5c9b2853df2bfe965/google_crc32c-1.8.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:f4b51844ef67d6cf2e9425983274da75f18b1597bb2c998e1c0a0e8d46f8f651", size = 30868, upload-time = "2025-12-16T00:48:12.163Z" }, + { url = "https://files.pythonhosted.org/packages/56/15/c25671c7aad70f8179d858c55a6ae8404902abe0cdcf32a29d581792b491/google_crc32c-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b0d1a7afc6e8e4635564ba8aa5c0548e3173e41b6384d7711a9123165f582de2", size = 33381, upload-time = "2025-12-16T00:40:26.268Z" }, + { url = "https://files.pythonhosted.org/packages/42/fa/f50f51260d7b0ef5d4898af122d8a7ec5a84e2984f676f746445f783705f/google_crc32c-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8b3f68782f3cbd1bce027e48768293072813469af6a61a86f6bb4977a4380f21", size = 33734, upload-time = "2025-12-16T00:40:27.028Z" }, + { url = "https://files.pythonhosted.org/packages/08/a5/7b059810934a09fb3ccb657e0843813c1fee1183d3bc2c8041800374aa2c/google_crc32c-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:d511b3153e7011a27ab6ee6bb3a5404a55b994dc1a7322c0b87b29606d9790e2", size = 34878, upload-time = "2025-12-16T00:35:23.142Z" }, + { url = "https://files.pythonhosted.org/packages/52/c5/c171e4d8c44fec1422d801a6d2e5d7ddabd733eeda505c79730ee9607f07/google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:87fa445064e7db928226b2e6f0d5304ab4cd0339e664a4e9a25029f384d9bb93", size = 28615, upload-time = "2025-12-16T00:40:29.298Z" }, + { url = "https://files.pythonhosted.org/packages/9c/97/7d75fe37a7a6ed171a2cf17117177e7aab7e6e0d115858741b41e9dd4254/google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f639065ea2042d5c034bf258a9f085eaa7af0cd250667c0635a3118e8f92c69c", size = 28800, upload-time = "2025-12-16T00:40:30.322Z" }, ] [[package]] name = "google-genai" -version = "1.52.0" +version = "1.59.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, - { name = "google-auth" }, + { name = "distro" }, + { name = "google-auth", extra = ["requests"] }, { name = "httpx" }, { name = "pydantic" }, { name = "requests" }, + { name = "sniffio" }, { name = "tenacity" }, { name = "typing-extensions" }, { name = "websockets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/09/4e/0ad8585d05312074bb69711b2d81cfed69ce0ae441913d57bf169bed20a7/google_genai-1.52.0.tar.gz", hash = "sha256:a74e8a4b3025f23aa98d6a0f84783119012ca6c336fd68f73c5d2b11465d7fc5", size = 258743, upload-time = "2025-11-21T02:18:55.742Z" } +sdist = { url = "https://files.pythonhosted.org/packages/40/34/c03bcbc759d67ac3d96077838cdc1eac85417de6ea3b65b313fe53043eee/google_genai-1.59.0.tar.gz", hash = "sha256:0b7a2dc24582850ae57294209d8dfc2c4f5fcfde0a3f11d81dc5aca75fb619e2", size = 487374, upload-time = "2026-01-15T20:29:46.619Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/53/6d00692fe50d73409b3406ae90c71bc4499c8ae7fac377ba16e283da917c/google_genai-1.59.0-py3-none-any.whl", hash = "sha256:59fc01a225d074fe9d1e626c3433da292f33249dadce4deb34edea698305a6df", size = 719099, upload-time = "2026-01-15T20:29:44.604Z" }, +] + +[[package]] +name = "google-resumable-media" +version = "2.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-crc32c" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/64/d7/520b62a35b23038ff005e334dba3ffc75fcf583bee26723f1fd8fd4b6919/google_resumable_media-2.8.0.tar.gz", hash = "sha256:f1157ed8b46994d60a1bc432544db62352043113684d4e030ee02e77ebe9a1ae", size = 2163265, upload-time = "2025-11-17T15:38:06.659Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/0b/93afde9cfe012260e9fe1522f35c9b72d6ee222f316586b1f23ecf44d518/google_resumable_media-2.8.0-py3-none-any.whl", hash = "sha256:dd14a116af303845a8d932ddae161a26e86cc229645bc98b39f026f9b1717582", size = 81340, upload-time = "2025-11-17T15:38:05.594Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.72.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/7b/adfd75544c415c487b33061fe7ae526165241c1ea133f9a9125a56b39fd8/googleapis_common_protos-1.72.0.tar.gz", hash = "sha256:e55a601c1b32b52d7a3e65f43563e2aa61bcd737998ee672ac9b951cd49319f5", size = 147433, upload-time = "2025-11-06T18:29:24.087Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/66/03f663e7bca7abe9ccfebe6cb3fe7da9a118fd723a5abb278d6117e7990e/google_genai-1.52.0-py3-none-any.whl", hash = "sha256:c8352b9f065ae14b9322b949c7debab8562982f03bf71d44130cd2b798c20743", size = 261219, upload-time = "2025-11-21T02:18:54.515Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ab/09169d5a4612a5f92490806649ac8d41e3ec9129c636754575b3553f4ea4/googleapis_common_protos-1.72.0-py3-none-any.whl", hash = "sha256:4299c5a82d5ae1a9702ada957347726b167f9f8d1fc352477702a1e851ff4038", size = 297515, upload-time = "2025-11-06T18:29:13.14Z" }, ] [[package]] @@ -756,6 +1081,35 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] +[[package]] +name = "hf-xet" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/6e/0f11bacf08a67f7fb5ee09740f2ca54163863b07b70d579356e9222ce5d8/hf_xet-1.2.0.tar.gz", hash = "sha256:a8c27070ca547293b6890c4bf389f713f80e8c478631432962bb7f4bc0bd7d7f", size = 506020, upload-time = "2025-10-24T19:04:32.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/a5/85ef910a0aa034a2abcfadc360ab5ac6f6bc4e9112349bd40ca97551cff0/hf_xet-1.2.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:ceeefcd1b7aed4956ae8499e2199607765fbd1c60510752003b6cc0b8413b649", size = 2861870, upload-time = "2025-10-24T19:04:11.422Z" }, + { url = "https://files.pythonhosted.org/packages/ea/40/e2e0a7eb9a51fe8828ba2d47fe22a7e74914ea8a0db68a18c3aa7449c767/hf_xet-1.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b70218dd548e9840224df5638fdc94bd033552963cfa97f9170829381179c813", size = 2717584, upload-time = "2025-10-24T19:04:09.586Z" }, + { url = "https://files.pythonhosted.org/packages/a5/7d/daf7f8bc4594fdd59a8a596f9e3886133fdc68e675292218a5e4c1b7e834/hf_xet-1.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d40b18769bb9a8bc82a9ede575ce1a44c75eb80e7375a01d76259089529b5dc", size = 3315004, upload-time = "2025-10-24T19:04:00.314Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ba/45ea2f605fbf6d81c8b21e4d970b168b18a53515923010c312c06cd83164/hf_xet-1.2.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:cd3a6027d59cfb60177c12d6424e31f4b5ff13d8e3a1247b3a584bf8977e6df5", size = 3222636, upload-time = "2025-10-24T19:03:58.111Z" }, + { url = "https://files.pythonhosted.org/packages/4a/1d/04513e3cab8f29ab8c109d309ddd21a2705afab9d52f2ba1151e0c14f086/hf_xet-1.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6de1fc44f58f6dd937956c8d304d8c2dea264c80680bcfa61ca4a15e7b76780f", size = 3408448, upload-time = "2025-10-24T19:04:20.951Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7c/60a2756d7feec7387db3a1176c632357632fbe7849fce576c5559d4520c7/hf_xet-1.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f182f264ed2acd566c514e45da9f2119110e48a87a327ca271027904c70c5832", size = 3503401, upload-time = "2025-10-24T19:04:22.549Z" }, + { url = "https://files.pythonhosted.org/packages/4e/64/48fffbd67fb418ab07451e4ce641a70de1c40c10a13e25325e24858ebe5a/hf_xet-1.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:293a7a3787e5c95d7be1857358a9130694a9c6021de3f27fa233f37267174382", size = 2900866, upload-time = "2025-10-24T19:04:33.461Z" }, + { url = "https://files.pythonhosted.org/packages/e2/51/f7e2caae42f80af886db414d4e9885fac959330509089f97cccb339c6b87/hf_xet-1.2.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:10bfab528b968c70e062607f663e21e34e2bba349e8038db546646875495179e", size = 2861861, upload-time = "2025-10-24T19:04:19.01Z" }, + { url = "https://files.pythonhosted.org/packages/6e/1d/a641a88b69994f9371bd347f1dd35e5d1e2e2460a2e350c8d5165fc62005/hf_xet-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2a212e842647b02eb6a911187dc878e79c4aa0aa397e88dd3b26761676e8c1f8", size = 2717699, upload-time = "2025-10-24T19:04:17.306Z" }, + { url = "https://files.pythonhosted.org/packages/df/e0/e5e9bba7d15f0318955f7ec3f4af13f92e773fbb368c0b8008a5acbcb12f/hf_xet-1.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e06daccb3a7d4c065f34fc26c14c74f4653069bb2b194e7f18f17cbe9939c0", size = 3314885, upload-time = "2025-10-24T19:04:07.642Z" }, + { url = "https://files.pythonhosted.org/packages/21/90/b7fe5ff6f2b7b8cbdf1bd56145f863c90a5807d9758a549bf3d916aa4dec/hf_xet-1.2.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:29c8fc913a529ec0a91867ce3d119ac1aac966e098cf49501800c870328cc090", size = 3221550, upload-time = "2025-10-24T19:04:05.55Z" }, + { url = "https://files.pythonhosted.org/packages/6f/cb/73f276f0a7ce46cc6a6ec7d6c7d61cbfe5f2e107123d9bbd0193c355f106/hf_xet-1.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e159cbfcfbb29f920db2c09ed8b660eb894640d284f102ada929b6e3dc410a", size = 3408010, upload-time = "2025-10-24T19:04:28.598Z" }, + { url = "https://files.pythonhosted.org/packages/b8/1e/d642a12caa78171f4be64f7cd9c40e3ca5279d055d0873188a58c0f5fbb9/hf_xet-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9c91d5ae931510107f148874e9e2de8a16052b6f1b3ca3c1b12f15ccb491390f", size = 3503264, upload-time = "2025-10-24T19:04:30.397Z" }, + { url = "https://files.pythonhosted.org/packages/17/b5/33764714923fa1ff922770f7ed18c2daae034d21ae6e10dbf4347c854154/hf_xet-1.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:210d577732b519ac6ede149d2f2f34049d44e8622bf14eb3d63bbcd2d4b332dc", size = 2901071, upload-time = "2025-10-24T19:04:37.463Z" }, + { url = "https://files.pythonhosted.org/packages/96/2d/22338486473df5923a9ab7107d375dbef9173c338ebef5098ef593d2b560/hf_xet-1.2.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:46740d4ac024a7ca9b22bebf77460ff43332868b661186a8e46c227fdae01848", size = 2866099, upload-time = "2025-10-24T19:04:15.366Z" }, + { url = "https://files.pythonhosted.org/packages/7f/8c/c5becfa53234299bc2210ba314eaaae36c2875e0045809b82e40a9544f0c/hf_xet-1.2.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:27df617a076420d8845bea087f59303da8be17ed7ec0cd7ee3b9b9f579dff0e4", size = 2722178, upload-time = "2025-10-24T19:04:13.695Z" }, + { url = "https://files.pythonhosted.org/packages/9a/92/cf3ab0b652b082e66876d08da57fcc6fa2f0e6c70dfbbafbd470bb73eb47/hf_xet-1.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3651fd5bfe0281951b988c0facbe726aa5e347b103a675f49a3fa8144c7968fd", size = 3320214, upload-time = "2025-10-24T19:04:03.596Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/3f7ec4a1b6a65bf45b059b6d4a5d38988f63e193056de2f420137e3c3244/hf_xet-1.2.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d06fa97c8562fb3ee7a378dd9b51e343bc5bc8190254202c9771029152f5e08c", size = 3229054, upload-time = "2025-10-24T19:04:01.949Z" }, + { url = "https://files.pythonhosted.org/packages/0b/dd/7ac658d54b9fb7999a0ccb07ad863b413cbaf5cf172f48ebcd9497ec7263/hf_xet-1.2.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:4c1428c9ae73ec0939410ec73023c4f842927f39db09b063b9482dac5a3bb737", size = 3413812, upload-time = "2025-10-24T19:04:24.585Z" }, + { url = "https://files.pythonhosted.org/packages/92/68/89ac4e5b12a9ff6286a12174c8538a5930e2ed662091dd2572bbe0a18c8a/hf_xet-1.2.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a55558084c16b09b5ed32ab9ed38421e2d87cf3f1f89815764d1177081b99865", size = 3508920, upload-time = "2025-10-24T19:04:26.927Z" }, + { url = "https://files.pythonhosted.org/packages/cb/44/870d44b30e1dcfb6a65932e3e1506c103a8a5aea9103c337e7a53180322c/hf_xet-1.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:e6584a52253f72c9f52f9e549d5895ca7a471608495c4ecaa6cc73dba2b24d69", size = 2905735, upload-time = "2025-10-24T19:04:35.928Z" }, +] + [[package]] name = "httpcore" version = "1.0.9" @@ -793,13 +1147,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc", size = 8960, upload-time = "2025-10-10T21:48:21.158Z" }, ] +[[package]] +name = "huggingface-hub" +version = "0.36.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "hf-xet", marker = "platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/63/4910c5fa9128fdadf6a9c5ac138e8b1b6cee4ca44bf7915bbfbce4e355ee/huggingface_hub-0.36.0.tar.gz", hash = "sha256:47b3f0e2539c39bf5cde015d63b72ec49baff67b6931c3d97f3f84532e2b8d25", size = 463358, upload-time = "2025-10-23T12:12:01.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/bd/1a875e0d592d447cbc02805fd3fe0f497714d6a2583f59d14fa9ebad96eb/huggingface_hub-0.36.0-py3-none-any.whl", hash = "sha256:7bcc9ad17d5b3f07b57c78e79d527102d08313caa278a641993acddcb894548d", size = 566094, upload-time = "2025-10-23T12:11:59.557Z" }, +] + [[package]] name = "identify" -version = "2.6.15" +version = "2.6.16" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ff/e7/685de97986c916a6d93b3876139e00eef26ad5bbbd61925d670ae8013449/identify-2.6.15.tar.gz", hash = "sha256:e4f4864b96c6557ef2a1e1c951771838f4edc9df3a72ec7118b338801b11c7bf", size = 99311, upload-time = "2025-10-02T17:43:40.631Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/8d/e8b97e6bd3fb6fb271346f7981362f1e04d6a7463abd0de79e1fda17c067/identify-2.6.16.tar.gz", hash = "sha256:846857203b5511bbe94d5a352a48ef2359532bc8f6727b5544077a0dcfb24980", size = 99360, upload-time = "2026-01-12T18:58:58.201Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl", hash = "sha256:1181ef7608e00704db228516541eb83a88a9f94433a8c80bb9b5bd54b1d81757", size = 99183, upload-time = "2025-10-02T17:43:39.137Z" }, + { url = "https://files.pythonhosted.org/packages/b8/58/40fbbcefeda82364720eba5cf2270f98496bdfa19ea75b4cccae79c698e6/identify-2.6.16-py2.py3-none-any.whl", hash = "sha256:391ee4d77741d994189522896270b787aed8670389bfd60f326d677d64a6dfb0", size = 99202, upload-time = "2026-01-12T18:58:56.627Z" }, ] [[package]] @@ -811,6 +1184,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, ] +[[package]] +name = "importlib-metadata" +version = "8.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, +] + [[package]] name = "iniconfig" version = "2.3.0" @@ -822,7 +1207,7 @@ wheels = [ [[package]] name = "instructor" -version = "1.13.0" +version = "1.14.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -840,9 +1225,9 @@ dependencies = [ { name = "ty" }, { name = "typer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/31/f0/7f31609ec2fb84b140ff573abf1cce78cd3a2a3c6479b60aa82b69d40d2a/instructor-1.13.0.tar.gz", hash = "sha256:bf838a5c503fafdd034a9b1f8544c5e1f62462eea9f89932bc75c116ad35ab5a", size = 69898121, upload-time = "2025-11-06T04:19:31.034Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/9b/276310494f4614d0936c5e667385cfa0e9ad8edbf88198e99e1ce8ea4bc7/instructor-1.14.4.tar.gz", hash = "sha256:a6825d1fb5db679f4655619d231acee7c6fc099affbbdf114fa62514a2ca3b53", size = 69949315, upload-time = "2026-01-16T22:43:36.464Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/64/6542ac826a4c9b937b67c096a785af1aaa26b22fcb7c81223cfe4038205b/instructor-1.13.0-py3-none-any.whl", hash = "sha256:2b735b6ea0d3194548369a18254f1dde83cb5ec0b182de77adbadd8be73caddc", size = 160904, upload-time = "2025-11-06T04:19:24.674Z" }, + { url = "https://files.pythonhosted.org/packages/66/b4/06766740b0455dea79de9785ca85a78324977f07872927ef62d069ce1bbf/instructor-1.14.4-py3-none-any.whl", hash = "sha256:141f3509150b3952c6579496b42c48bda2b603d8a2e8ccc88a455e1e22c46dd5", size = 176883, upload-time = "2026-01-16T22:43:32.928Z" }, ] [package.optional-dependencies] @@ -975,6 +1360,18 @@ version = "1.3.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/01/d5/40b617ee19d2d79f606ed37f8a81e51158f126d2af67270c68f2b47ae0d5/json2html-1.3.0.tar.gz", hash = "sha256:8951a53662ae9cfd812685facdba693fc950ffc1c1fd1a8a2d3cf4c34600689c", size = 6977, upload-time = "2019-07-03T20:50:03.023Z" } +[[package]] +name = "jsonlines" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359, upload-time = "2023-09-01T12:34:44.187Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701, upload-time = "2023-09-01T12:34:42.563Z" }, +] + [[package]] name = "jsonpath-python" version = "1.1.4" @@ -993,6 +1390,33 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0c/ec/e1db9922bceb168197a558a2b8c03a7963f1afe93517ddd3cf99f202f996/jsonref-1.1.0-py3-none-any.whl", hash = "sha256:590dc7773df6c21cbf948b5dac07a72a251db28b0238ceecce0a2abfa8ec30a9", size = 9425, upload-time = "2023-01-16T16:10:02.255Z" }, ] +[[package]] +name = "jsonschema" +version = "4.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + [[package]] name = "kajson" version = "0.3.1" @@ -1005,77 +1429,210 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9d/3b/3529c470a4cc1051abe2e4cd6a8a714b14eea26a8486bb3e1cd19a5c60d9/kajson-0.3.1-py3-none-any.whl", hash = "sha256:c129b5dd66f757ed8077c49803ea290f91ba6f5699717eb97b65d960bcc83ac4", size = 26721, upload-time = "2025-07-11T08:26:11.622Z" }, ] +[[package]] +name = "latex2mathml" +version = "3.78.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/26/57b1034c08922d0aefea79430a5e0006ffaee4f0ec59d566613f667ab2f7/latex2mathml-3.78.1.tar.gz", hash = "sha256:f941db80bf41db33f31df87b304e8b588f8166b813b0257c11c98f7a9d0aac71", size = 74030, upload-time = "2025-08-29T23:34:23.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/76/d661ea2e529c3d464f9efd73f9ac31626b45279eb4306e684054ea20e3d4/latex2mathml-3.78.1-py3-none-any.whl", hash = "sha256:f089b6d75e85b937f99693c93e8c16c0804008672c3dd2a3d25affd36f238100", size = 73892, upload-time = "2025-08-29T23:34:21.98Z" }, +] + [[package]] name = "librt" -version = "0.6.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/37/c3/cdff3c10e2e608490dc0a310ccf11ba777b3943ad4fcead2a2ade98c21e1/librt-0.6.3.tar.gz", hash = "sha256:c724a884e642aa2bbad52bb0203ea40406ad742368a5f90da1b220e970384aae", size = 54209, upload-time = "2025-11-29T14:01:56.058Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/84/859df8db21dedab2538ddfbe1d486dda3eb66a98c6ad7ba754a99e25e45e/librt-0.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:45660d26569cc22ed30adf583389d8a0d1b468f8b5e518fcf9bfe2cd298f9dd1", size = 27294, upload-time = "2025-11-29T14:00:35.053Z" }, - { url = "https://files.pythonhosted.org/packages/f7/01/ec3971cf9c4f827f17de6729bdfdbf01a67493147334f4ef8fac68936e3a/librt-0.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:54f3b2177fb892d47f8016f1087d21654b44f7fc4cf6571c1c6b3ea531ab0fcf", size = 27635, upload-time = "2025-11-29T14:00:36.496Z" }, - { url = "https://files.pythonhosted.org/packages/b4/f9/3efe201df84dd26388d2e0afa4c4dc668c8e406a3da7b7319152faf835a1/librt-0.6.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c5b31bed2c2f2fa1fcb4815b75f931121ae210dc89a3d607fb1725f5907f1437", size = 81768, upload-time = "2025-11-29T14:00:37.451Z" }, - { url = "https://files.pythonhosted.org/packages/0a/13/f63e60bc219b17f3d8f3d13423cd4972e597b0321c51cac7bfbdd5e1f7b9/librt-0.6.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8f8ed5053ef9fb08d34f1fd80ff093ccbd1f67f147633a84cf4a7d9b09c0f089", size = 85884, upload-time = "2025-11-29T14:00:38.433Z" }, - { url = "https://files.pythonhosted.org/packages/c2/42/0068f14f39a79d1ce8a19d4988dd07371df1d0a7d3395fbdc8a25b1c9437/librt-0.6.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3f0e4bd9bcb0ee34fa3dbedb05570da50b285f49e52c07a241da967840432513", size = 85830, upload-time = "2025-11-29T14:00:39.418Z" }, - { url = "https://files.pythonhosted.org/packages/14/1c/87f5af3a9e6564f09e50c72f82fc3057fd42d1facc8b510a707d0438c4ad/librt-0.6.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d8f89c8d20dfa648a3f0a56861946eb00e5b00d6b00eea14bc5532b2fcfa8ef1", size = 88086, upload-time = "2025-11-29T14:00:40.555Z" }, - { url = "https://files.pythonhosted.org/packages/05/e5/22153b98b88a913b5b3f266f12e57df50a2a6960b3f8fcb825b1a0cfe40a/librt-0.6.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:ecc2c526547eacd20cb9fbba19a5268611dbc70c346499656d6cf30fae328977", size = 86470, upload-time = "2025-11-29T14:00:41.827Z" }, - { url = "https://files.pythonhosted.org/packages/18/3c/ea1edb587799b1edcc22444e0630fa422e32d7aaa5bfb5115b948acc2d1c/librt-0.6.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fbedeb9b48614d662822ee514567d2d49a8012037fc7b4cd63f282642c2f4b7d", size = 89079, upload-time = "2025-11-29T14:00:42.882Z" }, - { url = "https://files.pythonhosted.org/packages/73/ad/50bb4ae6b07c9f3ab19653e0830a210533b30eb9a18d515efb5a2b9d0c7c/librt-0.6.3-cp310-cp310-win32.whl", hash = "sha256:0765b0fe0927d189ee14b087cd595ae636bef04992e03fe6dfdaa383866c8a46", size = 19820, upload-time = "2025-11-29T14:00:44.211Z" }, - { url = "https://files.pythonhosted.org/packages/7a/12/7426ee78f3b1dbe11a90619d54cb241ca924ca3c0ff9ade3992178e9b440/librt-0.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:8c659f9fb8a2f16dc4131b803fa0144c1dadcb3ab24bb7914d01a6da58ae2457", size = 21332, upload-time = "2025-11-29T14:00:45.427Z" }, - { url = "https://files.pythonhosted.org/packages/8b/80/bc60fd16fe24910bf5974fb914778a2e8540cef55385ab2cb04a0dfe42c4/librt-0.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:61348cc488b18d1b1ff9f3e5fcd5ac43ed22d3e13e862489d2267c2337285c08", size = 27285, upload-time = "2025-11-29T14:00:46.626Z" }, - { url = "https://files.pythonhosted.org/packages/88/3c/26335536ed9ba097c79cffcee148393592e55758fe76d99015af3e47a6d0/librt-0.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64645b757d617ad5f98c08e07620bc488d4bced9ced91c6279cec418f16056fa", size = 27629, upload-time = "2025-11-29T14:00:47.863Z" }, - { url = "https://files.pythonhosted.org/packages/af/fd/2dcedeacfedee5d2eda23e7a49c1c12ce6221b5d58a13555f053203faafc/librt-0.6.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:26b8026393920320bb9a811b691d73c5981385d537ffc5b6e22e53f7b65d4122", size = 82039, upload-time = "2025-11-29T14:00:49.131Z" }, - { url = "https://files.pythonhosted.org/packages/48/ff/6aa11914b83b0dc2d489f7636942a8e3322650d0dba840db9a1b455f3caa/librt-0.6.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d998b432ed9ffccc49b820e913c8f327a82026349e9c34fa3690116f6b70770f", size = 86560, upload-time = "2025-11-29T14:00:50.403Z" }, - { url = "https://files.pythonhosted.org/packages/76/a1/d25af61958c2c7eb978164aeba0350719f615179ba3f428b682b9a5fdace/librt-0.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e18875e17ef69ba7dfa9623f2f95f3eda6f70b536079ee6d5763ecdfe6cc9040", size = 86494, upload-time = "2025-11-29T14:00:51.383Z" }, - { url = "https://files.pythonhosted.org/packages/7d/4b/40e75d3b258c801908e64b39788f9491635f9554f8717430a491385bd6f2/librt-0.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a218f85081fc3f70cddaed694323a1ad7db5ca028c379c214e3a7c11c0850523", size = 88914, upload-time = "2025-11-29T14:00:52.688Z" }, - { url = "https://files.pythonhosted.org/packages/97/6d/0070c81aba8a169224301c75fb5fb6c3c25ca67e6ced086584fc130d5a67/librt-0.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1ef42ff4edd369e84433ce9b188a64df0837f4f69e3d34d3b34d4955c599d03f", size = 86944, upload-time = "2025-11-29T14:00:53.768Z" }, - { url = "https://files.pythonhosted.org/packages/a6/94/809f38887941b7726692e0b5a083dbdc87dbb8cf893e3b286550c5f0b129/librt-0.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0e0f2b79993fec23a685b3e8107ba5f8675eeae286675a216da0b09574fa1e47", size = 89852, upload-time = "2025-11-29T14:00:54.71Z" }, - { url = "https://files.pythonhosted.org/packages/58/a3/b0e5b1cda675b91f1111d8ba941da455d8bfaa22f4d2d8963ba96ccb5b12/librt-0.6.3-cp311-cp311-win32.whl", hash = "sha256:fd98cacf4e0fabcd4005c452cb8a31750258a85cab9a59fb3559e8078da408d7", size = 19948, upload-time = "2025-11-29T14:00:55.989Z" }, - { url = "https://files.pythonhosted.org/packages/cc/73/70011c2b37e3be3ece3affd3abc8ebe5cda482b03fd6b3397906321a901e/librt-0.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:e17b5b42c8045867ca9d1f54af00cc2275198d38de18545edaa7833d7e9e4ac8", size = 21406, upload-time = "2025-11-29T14:00:56.874Z" }, - { url = "https://files.pythonhosted.org/packages/91/ee/119aa759290af6ca0729edf513ca390c1afbeae60f3ecae9b9d56f25a8a9/librt-0.6.3-cp311-cp311-win_arm64.whl", hash = "sha256:87597e3d57ec0120a3e1d857a708f80c02c42ea6b00227c728efbc860f067c45", size = 20875, upload-time = "2025-11-29T14:00:57.752Z" }, - { url = "https://files.pythonhosted.org/packages/b4/2c/b59249c566f98fe90e178baf59e83f628d6c38fb8bc78319301fccda0b5e/librt-0.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:74418f718083009108dc9a42c21bf2e4802d49638a1249e13677585fcc9ca176", size = 27841, upload-time = "2025-11-29T14:00:58.925Z" }, - { url = "https://files.pythonhosted.org/packages/40/e8/9db01cafcd1a2872b76114c858f81cc29ce7ad606bc102020d6dabf470fb/librt-0.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:514f3f363d1ebc423357d36222c37e5c8e6674b6eae8d7195ac9a64903722057", size = 27844, upload-time = "2025-11-29T14:01:00.2Z" }, - { url = "https://files.pythonhosted.org/packages/59/4d/da449d3a7d83cc853af539dee42adc37b755d7eea4ad3880bacfd84b651d/librt-0.6.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cf1115207a5049d1f4b7b4b72de0e52f228d6c696803d94843907111cbf80610", size = 84091, upload-time = "2025-11-29T14:01:01.118Z" }, - { url = "https://files.pythonhosted.org/packages/ea/6c/f90306906fb6cc6eaf4725870f0347115de05431e1f96d35114392d31fda/librt-0.6.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ad8ba80cdcea04bea7b78fcd4925bfbf408961e9d8397d2ee5d3ec121e20c08c", size = 88239, upload-time = "2025-11-29T14:01:02.11Z" }, - { url = "https://files.pythonhosted.org/packages/e7/ae/473ce7b423cfac2cb503851a89d9d2195bf615f534d5912bf86feeebbee7/librt-0.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4018904c83eab49c814e2494b4e22501a93cdb6c9f9425533fe693c3117126f9", size = 88815, upload-time = "2025-11-29T14:01:03.114Z" }, - { url = "https://files.pythonhosted.org/packages/c4/6d/934df738c87fb9617cabefe4891eece585a06abe6def25b4bca3b174429d/librt-0.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8983c5c06ac9c990eac5eb97a9f03fe41dc7e9d7993df74d9e8682a1056f596c", size = 90598, upload-time = "2025-11-29T14:01:04.071Z" }, - { url = "https://files.pythonhosted.org/packages/72/89/eeaa124f5e0f431c2b39119550378ae817a4b1a3c93fd7122f0639336fff/librt-0.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d7769c579663a6f8dbf34878969ac71befa42067ce6bf78e6370bf0d1194997c", size = 88603, upload-time = "2025-11-29T14:01:05.02Z" }, - { url = "https://files.pythonhosted.org/packages/4d/ed/c60b3c1cfc27d709bc0288af428ce58543fcb5053cf3eadbc773c24257f5/librt-0.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d3c9a07eafdc70556f8c220da4a538e715668c0c63cabcc436a026e4e89950bf", size = 92112, upload-time = "2025-11-29T14:01:06.304Z" }, - { url = "https://files.pythonhosted.org/packages/c1/ab/f56169be5f716ef4ab0277be70bcb1874b4effc262e655d85b505af4884d/librt-0.6.3-cp312-cp312-win32.whl", hash = "sha256:38320386a48a15033da295df276aea93a92dfa94a862e06893f75ea1d8bbe89d", size = 20127, upload-time = "2025-11-29T14:01:07.283Z" }, - { url = "https://files.pythonhosted.org/packages/ff/8d/222750ce82bf95125529eaab585ac7e2829df252f3cfc05d68792fb1dd2c/librt-0.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:c0ecf4786ad0404b072196b5df774b1bb23c8aacdcacb6c10b4128bc7b00bd01", size = 21545, upload-time = "2025-11-29T14:01:08.184Z" }, - { url = "https://files.pythonhosted.org/packages/72/c9/f731ddcfb72f446a92a8674c6b8e1e2242773cce43a04f41549bd8b958ff/librt-0.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:9f2a6623057989ebc469cd9cc8fe436c40117a0147627568d03f84aef7854c55", size = 20946, upload-time = "2025-11-29T14:01:09.384Z" }, - { url = "https://files.pythonhosted.org/packages/dd/aa/3055dd440f8b8b3b7e8624539a0749dd8e1913e978993bcca9ce7e306231/librt-0.6.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9e716f9012148a81f02f46a04fc4c663420c6fbfeacfac0b5e128cf43b4413d3", size = 27874, upload-time = "2025-11-29T14:01:10.615Z" }, - { url = "https://files.pythonhosted.org/packages/ef/93/226d7dd455eaa4c26712b5ccb2dfcca12831baa7f898c8ffd3a831e29fda/librt-0.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:669ff2495728009a96339c5ad2612569c6d8be4474e68f3f3ac85d7c3261f5f5", size = 27852, upload-time = "2025-11-29T14:01:11.535Z" }, - { url = "https://files.pythonhosted.org/packages/4e/8b/db9d51191aef4e4cc06285250affe0bb0ad8b2ed815f7ca77951655e6f02/librt-0.6.3-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:349b6873ebccfc24c9efd244e49da9f8a5c10f60f07575e248921aae2123fc42", size = 84264, upload-time = "2025-11-29T14:01:12.461Z" }, - { url = "https://files.pythonhosted.org/packages/8d/53/297c96bda3b5a73bdaf748f1e3ae757edd29a0a41a956b9c10379f193417/librt-0.6.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c74c26736008481c9f6d0adf1aedb5a52aff7361fea98276d1f965c0256ee70", size = 88432, upload-time = "2025-11-29T14:01:13.405Z" }, - { url = "https://files.pythonhosted.org/packages/54/3a/c005516071123278e340f22de72fa53d51e259d49215295c212da16c4dc2/librt-0.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:408a36ddc75e91918cb15b03460bdc8a015885025d67e68c6f78f08c3a88f522", size = 89014, upload-time = "2025-11-29T14:01:14.373Z" }, - { url = "https://files.pythonhosted.org/packages/8e/9b/ea715f818d926d17b94c80a12d81a79e95c44f52848e61e8ca1ff29bb9a9/librt-0.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e61ab234624c9ffca0248a707feffe6fac2343758a36725d8eb8a6efef0f8c30", size = 90807, upload-time = "2025-11-29T14:01:15.377Z" }, - { url = "https://files.pythonhosted.org/packages/f0/fc/4e2e4c87e002fa60917a8e474fd13c4bac9a759df82be3778573bb1ab954/librt-0.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:324462fe7e3896d592b967196512491ec60ca6e49c446fe59f40743d08c97917", size = 88890, upload-time = "2025-11-29T14:01:16.633Z" }, - { url = "https://files.pythonhosted.org/packages/70/7f/c7428734fbdfd4db3d5b9237fc3a857880b2ace66492836f6529fef25d92/librt-0.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:36b2ec8c15030002c7f688b4863e7be42820d7c62d9c6eece3db54a2400f0530", size = 92300, upload-time = "2025-11-29T14:01:17.658Z" }, - { url = "https://files.pythonhosted.org/packages/f9/0c/738c4824fdfe74dc0f95d5e90ef9e759d4ecf7fd5ba964d54a7703322251/librt-0.6.3-cp313-cp313-win32.whl", hash = "sha256:25b1b60cb059471c0c0c803e07d0dfdc79e41a0a122f288b819219ed162672a3", size = 20159, upload-time = "2025-11-29T14:01:18.61Z" }, - { url = "https://files.pythonhosted.org/packages/f2/95/93d0e61bc617306ecf4c54636b5cbde4947d872563565c4abdd9d07a39d3/librt-0.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:10a95ad074e2a98c9e4abc7f5b7d40e5ecbfa84c04c6ab8a70fabf59bd429b88", size = 21484, upload-time = "2025-11-29T14:01:19.506Z" }, - { url = "https://files.pythonhosted.org/packages/10/23/abd7ace79ab54d1dbee265f13529266f686a7ce2d21ab59a992f989009b6/librt-0.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:17000df14f552e86877d67e4ab7966912224efc9368e998c96a6974a8d609bf9", size = 20935, upload-time = "2025-11-29T14:01:20.415Z" }, - { url = "https://files.pythonhosted.org/packages/83/14/c06cb31152182798ed98be73f54932ab984894f5a8fccf9b73130897a938/librt-0.6.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8e695f25d1a425ad7a272902af8ab8c8d66c1998b177e4b5f5e7b4e215d0c88a", size = 27566, upload-time = "2025-11-29T14:01:21.609Z" }, - { url = "https://files.pythonhosted.org/packages/0c/b1/ce83ca7b057b06150519152f53a0b302d7c33c8692ce2f01f669b5a819d9/librt-0.6.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3e84a4121a7ae360ca4da436548a9c1ca8ca134a5ced76c893cc5944426164bd", size = 27753, upload-time = "2025-11-29T14:01:22.558Z" }, - { url = "https://files.pythonhosted.org/packages/3b/ec/739a885ef0a2839b6c25f1b01c99149d2cb6a34e933ffc8c051fcd22012e/librt-0.6.3-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:05f385a414de3f950886ea0aad8f109650d4b712cf9cc14cc17f5f62a9ab240b", size = 83178, upload-time = "2025-11-29T14:01:23.555Z" }, - { url = "https://files.pythonhosted.org/packages/db/bd/dc18bb1489d48c0911b9f4d72eae2d304ea264e215ba80f1e6ba4a9fc41d/librt-0.6.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36a8e337461150b05ca2c7bdedb9e591dfc262c5230422cea398e89d0c746cdc", size = 87266, upload-time = "2025-11-29T14:01:24.532Z" }, - { url = "https://files.pythonhosted.org/packages/94/f3/d0c5431b39eef15e48088b2d739ad84b17c2f1a22c0345c6d4c4a42b135e/librt-0.6.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcbe48f6a03979384f27086484dc2a14959be1613cb173458bd58f714f2c48f3", size = 87623, upload-time = "2025-11-29T14:01:25.798Z" }, - { url = "https://files.pythonhosted.org/packages/3b/15/9a52e90834e4bd6ee16cdbaf551cb32227cbaad27398391a189c489318bc/librt-0.6.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4bca9e4c260233fba37b15c4ec2f78aa99c1a79fbf902d19dd4a763c5c3fb751", size = 89436, upload-time = "2025-11-29T14:01:26.769Z" }, - { url = "https://files.pythonhosted.org/packages/c3/8a/a7e78e46e8486e023c50f21758930ef4793999115229afd65de69e94c9cc/librt-0.6.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:760c25ed6ac968e24803eb5f7deb17ce026902d39865e83036bacbf5cf242aa8", size = 87540, upload-time = "2025-11-29T14:01:27.756Z" }, - { url = "https://files.pythonhosted.org/packages/49/01/93799044a1cccac31f1074b07c583e181829d240539657e7f305ae63ae2a/librt-0.6.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4aa4a93a353ccff20df6e34fa855ae8fd788832c88f40a9070e3ddd3356a9f0e", size = 90597, upload-time = "2025-11-29T14:01:29.35Z" }, - { url = "https://files.pythonhosted.org/packages/a7/29/00c7f58b8f8eb1bad6529ffb6c9cdcc0890a27dac59ecda04f817ead5277/librt-0.6.3-cp314-cp314-win32.whl", hash = "sha256:cb92741c2b4ea63c09609b064b26f7f5d9032b61ae222558c55832ec3ad0bcaf", size = 18955, upload-time = "2025-11-29T14:01:30.325Z" }, - { url = "https://files.pythonhosted.org/packages/d7/13/2739e6e197a9f751375a37908a6a5b0bff637b81338497a1bcb5817394da/librt-0.6.3-cp314-cp314-win_amd64.whl", hash = "sha256:fdcd095b1b812d756fa5452aca93b962cf620694c0cadb192cec2bb77dcca9a2", size = 20263, upload-time = "2025-11-29T14:01:31.287Z" }, - { url = "https://files.pythonhosted.org/packages/e1/73/393868fc2158705ea003114a24e73bb10b03bda31e9ad7b5c5ec6575338b/librt-0.6.3-cp314-cp314-win_arm64.whl", hash = "sha256:822ca79e28720a76a935c228d37da6579edef048a17cd98d406a2484d10eda78", size = 19575, upload-time = "2025-11-29T14:01:32.229Z" }, - { url = "https://files.pythonhosted.org/packages/48/6d/3c8ff3dec21bf804a205286dd63fd28dcdbe00b8dd7eb7ccf2e21a40a0b0/librt-0.6.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:078cd77064d1640cb7b0650871a772956066174d92c8aeda188a489b58495179", size = 28732, upload-time = "2025-11-29T14:01:33.165Z" }, - { url = "https://files.pythonhosted.org/packages/f4/90/e214b8b4aa34ed3d3f1040719c06c4d22472c40c5ef81a922d5af7876eb4/librt-0.6.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5cc22f7f5c0cc50ed69f4b15b9c51d602aabc4500b433aaa2ddd29e578f452f7", size = 29065, upload-time = "2025-11-29T14:01:34.088Z" }, - { url = "https://files.pythonhosted.org/packages/ab/90/ef61ed51f0a7770cc703422d907a757bbd8811ce820c333d3db2fd13542a/librt-0.6.3-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:14b345eb7afb61b9fdcdfda6738946bd11b8e0f6be258666b0646af3b9bb5916", size = 93703, upload-time = "2025-11-29T14:01:35.057Z" }, - { url = "https://files.pythonhosted.org/packages/a8/ae/c30bb119c35962cbe9a908a71da99c168056fc3f6e9bbcbc157d0b724d89/librt-0.6.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d46aa46aa29b067f0b8b84f448fd9719aaf5f4c621cc279164d76a9dc9ab3e8", size = 98890, upload-time = "2025-11-29T14:01:36.031Z" }, - { url = "https://files.pythonhosted.org/packages/d1/96/47a4a78d252d36f072b79d592df10600d379a895c3880c8cbd2ac699f0ad/librt-0.6.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1b51ba7d9d5d9001494769eca8c0988adce25d0a970c3ba3f2eb9df9d08036fc", size = 98255, upload-time = "2025-11-29T14:01:37.058Z" }, - { url = "https://files.pythonhosted.org/packages/e5/28/779b5cc3cd9987683884eb5f5672e3251676bebaaae6b7da1cf366eb1da1/librt-0.6.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ced0925a18fddcff289ef54386b2fc230c5af3c83b11558571124bfc485b8c07", size = 100769, upload-time = "2025-11-29T14:01:38.413Z" }, - { url = "https://files.pythonhosted.org/packages/28/d7/771755e57c375cb9d25a4e106f570607fd856e2cb91b02418db1db954796/librt-0.6.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:6bac97e51f66da2ca012adddbe9fd656b17f7368d439de30898f24b39512f40f", size = 98580, upload-time = "2025-11-29T14:01:39.459Z" }, - { url = "https://files.pythonhosted.org/packages/d0/ec/8b157eb8fbc066339a2f34b0aceb2028097d0ed6150a52e23284a311eafe/librt-0.6.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b2922a0e8fa97395553c304edc3bd36168d8eeec26b92478e292e5d4445c1ef0", size = 101706, upload-time = "2025-11-29T14:01:40.474Z" }, - { url = "https://files.pythonhosted.org/packages/82/a8/4aaead9a06c795a318282aebf7d3e3e578fa889ff396e1b640c3be4c7806/librt-0.6.3-cp314-cp314t-win32.whl", hash = "sha256:f33462b19503ba68d80dac8a1354402675849259fb3ebf53b67de86421735a3a", size = 19465, upload-time = "2025-11-29T14:01:41.77Z" }, - { url = "https://files.pythonhosted.org/packages/3a/61/b7e6a02746c1731670c19ba07d86da90b1ae45d29e405c0b5615abf97cde/librt-0.6.3-cp314-cp314t-win_amd64.whl", hash = "sha256:04f8ce401d4f6380cfc42af0f4e67342bf34c820dae01343f58f472dbac75dcf", size = 21042, upload-time = "2025-11-29T14:01:42.865Z" }, - { url = "https://files.pythonhosted.org/packages/0e/3d/72cc9ec90bb80b5b1a65f0bb74a0f540195837baaf3b98c7fa4a7aa9718e/librt-0.6.3-cp314-cp314t-win_arm64.whl", hash = "sha256:afb39550205cc5e5c935762c6bf6a2bb34f7d21a68eadb25e2db7bf3593fecc0", size = 20246, upload-time = "2025-11-29T14:01:44.13Z" }, +version = "0.7.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/24/5f3646ff414285e0f7708fa4e946b9bf538345a41d1c375c439467721a5e/librt-0.7.8.tar.gz", hash = "sha256:1a4ede613941d9c3470b0368be851df6bb78ab218635512d0370b27a277a0862", size = 148323, upload-time = "2026-01-14T12:56:16.876Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/13/57b06758a13550c5f09563893b004f98e9537ee6ec67b7df85c3571c8832/librt-0.7.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b45306a1fc5f53c9330fbee134d8b3227fe5da2ab09813b892790400aa49352d", size = 56521, upload-time = "2026-01-14T12:54:40.066Z" }, + { url = "https://files.pythonhosted.org/packages/c2/24/bbea34d1452a10612fb45ac8356f95351ba40c2517e429602160a49d1fd0/librt-0.7.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:864c4b7083eeee250ed55135d2127b260d7eb4b5e953a9e5df09c852e327961b", size = 58456, upload-time = "2026-01-14T12:54:41.471Z" }, + { url = "https://files.pythonhosted.org/packages/04/72/a168808f92253ec3a810beb1eceebc465701197dbc7e865a1c9ceb3c22c7/librt-0.7.8-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6938cc2de153bc927ed8d71c7d2f2ae01b4e96359126c602721340eb7ce1a92d", size = 164392, upload-time = "2026-01-14T12:54:42.843Z" }, + { url = "https://files.pythonhosted.org/packages/14/5c/4c0d406f1b02735c2e7af8ff1ff03a6577b1369b91aa934a9fa2cc42c7ce/librt-0.7.8-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:66daa6ac5de4288a5bbfbe55b4caa7bf0cd26b3269c7a476ffe8ce45f837f87d", size = 172959, upload-time = "2026-01-14T12:54:44.602Z" }, + { url = "https://files.pythonhosted.org/packages/82/5f/3e85351c523f73ad8d938989e9a58c7f59fb9c17f761b9981b43f0025ce7/librt-0.7.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4864045f49dc9c974dadb942ac56a74cd0479a2aafa51ce272c490a82322ea3c", size = 186717, upload-time = "2026-01-14T12:54:45.986Z" }, + { url = "https://files.pythonhosted.org/packages/08/f8/18bfe092e402d00fe00d33aa1e01dda1bd583ca100b393b4373847eade6d/librt-0.7.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a36515b1328dc5b3ffce79fe204985ca8572525452eacabee2166f44bb387b2c", size = 184585, upload-time = "2026-01-14T12:54:47.139Z" }, + { url = "https://files.pythonhosted.org/packages/4e/fc/f43972ff56fd790a9fa55028a52ccea1875100edbb856b705bd393b601e3/librt-0.7.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b7e7f140c5169798f90b80d6e607ed2ba5059784968a004107c88ad61fb3641d", size = 180497, upload-time = "2026-01-14T12:54:48.946Z" }, + { url = "https://files.pythonhosted.org/packages/e1/3a/25e36030315a410d3ad0b7d0f19f5f188e88d1613d7d3fd8150523ea1093/librt-0.7.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ff71447cb778a4f772ddc4ce360e6ba9c95527ed84a52096bd1bbf9fee2ec7c0", size = 200052, upload-time = "2026-01-14T12:54:50.382Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b8/f3a5a1931ae2a6ad92bf6893b9ef44325b88641d58723529e2c2935e8abe/librt-0.7.8-cp310-cp310-win32.whl", hash = "sha256:047164e5f68b7a8ebdf9fae91a3c2161d3192418aadd61ddd3a86a56cbe3dc85", size = 43477, upload-time = "2026-01-14T12:54:51.815Z" }, + { url = "https://files.pythonhosted.org/packages/fe/91/c4202779366bc19f871b4ad25db10fcfa1e313c7893feb942f32668e8597/librt-0.7.8-cp310-cp310-win_amd64.whl", hash = "sha256:d6f254d096d84156a46a84861183c183d30734e52383602443292644d895047c", size = 49806, upload-time = "2026-01-14T12:54:53.149Z" }, + { url = "https://files.pythonhosted.org/packages/1b/a3/87ea9c1049f2c781177496ebee29430e4631f439b8553a4969c88747d5d8/librt-0.7.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ff3e9c11aa260c31493d4b3197d1e28dd07768594a4f92bec4506849d736248f", size = 56507, upload-time = "2026-01-14T12:54:54.156Z" }, + { url = "https://files.pythonhosted.org/packages/5e/4a/23bcef149f37f771ad30203d561fcfd45b02bc54947b91f7a9ac34815747/librt-0.7.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ddb52499d0b3ed4aa88746aaf6f36a08314677d5c346234c3987ddc506404eac", size = 58455, upload-time = "2026-01-14T12:54:55.978Z" }, + { url = "https://files.pythonhosted.org/packages/22/6e/46eb9b85c1b9761e0f42b6e6311e1cc544843ac897457062b9d5d0b21df4/librt-0.7.8-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e9c0afebbe6ce177ae8edba0c7c4d626f2a0fc12c33bb993d163817c41a7a05c", size = 164956, upload-time = "2026-01-14T12:54:57.311Z" }, + { url = "https://files.pythonhosted.org/packages/7a/3f/aa7c7f6829fb83989feb7ba9aa11c662b34b4bd4bd5b262f2876ba3db58d/librt-0.7.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:631599598e2c76ded400c0a8722dec09217c89ff64dc54b060f598ed68e7d2a8", size = 174364, upload-time = "2026-01-14T12:54:59.089Z" }, + { url = "https://files.pythonhosted.org/packages/3f/2d/d57d154b40b11f2cb851c4df0d4c4456bacd9b1ccc4ecb593ddec56c1a8b/librt-0.7.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c1ba843ae20db09b9d5c80475376168feb2640ce91cd9906414f23cc267a1ff", size = 188034, upload-time = "2026-01-14T12:55:00.141Z" }, + { url = "https://files.pythonhosted.org/packages/59/f9/36c4dad00925c16cd69d744b87f7001792691857d3b79187e7a673e812fb/librt-0.7.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b5b007bb22ea4b255d3ee39dfd06d12534de2fcc3438567d9f48cdaf67ae1ae3", size = 186295, upload-time = "2026-01-14T12:55:01.303Z" }, + { url = "https://files.pythonhosted.org/packages/23/9b/8a9889d3df5efb67695a67785028ccd58e661c3018237b73ad081691d0cb/librt-0.7.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dbd79caaf77a3f590cbe32dc2447f718772d6eea59656a7dcb9311161b10fa75", size = 181470, upload-time = "2026-01-14T12:55:02.492Z" }, + { url = "https://files.pythonhosted.org/packages/43/64/54d6ef11afca01fef8af78c230726a9394759f2addfbf7afc5e3cc032a45/librt-0.7.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:87808a8d1e0bd62a01cafc41f0fd6818b5a5d0ca0d8a55326a81643cdda8f873", size = 201713, upload-time = "2026-01-14T12:55:03.919Z" }, + { url = "https://files.pythonhosted.org/packages/2d/29/73e7ed2991330b28919387656f54109139b49e19cd72902f466bd44415fd/librt-0.7.8-cp311-cp311-win32.whl", hash = "sha256:31724b93baa91512bd0a376e7cf0b59d8b631ee17923b1218a65456fa9bda2e7", size = 43803, upload-time = "2026-01-14T12:55:04.996Z" }, + { url = "https://files.pythonhosted.org/packages/3f/de/66766ff48ed02b4d78deea30392ae200bcbd99ae61ba2418b49fd50a4831/librt-0.7.8-cp311-cp311-win_amd64.whl", hash = "sha256:978e8b5f13e52cf23a9e80f3286d7546baa70bc4ef35b51d97a709d0b28e537c", size = 50080, upload-time = "2026-01-14T12:55:06.489Z" }, + { url = "https://files.pythonhosted.org/packages/6f/e3/33450438ff3a8c581d4ed7f798a70b07c3206d298cf0b87d3806e72e3ed8/librt-0.7.8-cp311-cp311-win_arm64.whl", hash = "sha256:20e3946863d872f7cabf7f77c6c9d370b8b3d74333d3a32471c50d3a86c0a232", size = 43383, upload-time = "2026-01-14T12:55:07.49Z" }, + { url = "https://files.pythonhosted.org/packages/56/04/79d8fcb43cae376c7adbab7b2b9f65e48432c9eced62ac96703bcc16e09b/librt-0.7.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9b6943885b2d49c48d0cff23b16be830ba46b0152d98f62de49e735c6e655a63", size = 57472, upload-time = "2026-01-14T12:55:08.528Z" }, + { url = "https://files.pythonhosted.org/packages/b4/ba/60b96e93043d3d659da91752689023a73981336446ae82078cddf706249e/librt-0.7.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46ef1f4b9b6cc364b11eea0ecc0897314447a66029ee1e55859acb3dd8757c93", size = 58986, upload-time = "2026-01-14T12:55:09.466Z" }, + { url = "https://files.pythonhosted.org/packages/7c/26/5215e4cdcc26e7be7eee21955a7e13cbf1f6d7d7311461a6014544596fac/librt-0.7.8-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:907ad09cfab21e3c86e8f1f87858f7049d1097f77196959c033612f532b4e592", size = 168422, upload-time = "2026-01-14T12:55:10.499Z" }, + { url = "https://files.pythonhosted.org/packages/0f/84/e8d1bc86fa0159bfc24f3d798d92cafd3897e84c7fea7fe61b3220915d76/librt-0.7.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2991b6c3775383752b3ca0204842743256f3ad3deeb1d0adc227d56b78a9a850", size = 177478, upload-time = "2026-01-14T12:55:11.577Z" }, + { url = "https://files.pythonhosted.org/packages/57/11/d0268c4b94717a18aa91df1100e767b010f87b7ae444dafaa5a2d80f33a6/librt-0.7.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03679b9856932b8c8f674e87aa3c55ea11c9274301f76ae8dc4d281bda55cf62", size = 192439, upload-time = "2026-01-14T12:55:12.7Z" }, + { url = "https://files.pythonhosted.org/packages/8d/56/1e8e833b95fe684f80f8894ae4d8b7d36acc9203e60478fcae599120a975/librt-0.7.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3968762fec1b2ad34ce57458b6de25dbb4142713e9ca6279a0d352fa4e9f452b", size = 191483, upload-time = "2026-01-14T12:55:13.838Z" }, + { url = "https://files.pythonhosted.org/packages/17/48/f11cf28a2cb6c31f282009e2208312aa84a5ee2732859f7856ee306176d5/librt-0.7.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bb7a7807523a31f03061288cc4ffc065d684c39db7644c676b47d89553c0d714", size = 185376, upload-time = "2026-01-14T12:55:15.017Z" }, + { url = "https://files.pythonhosted.org/packages/b8/6a/d7c116c6da561b9155b184354a60a3d5cdbf08fc7f3678d09c95679d13d9/librt-0.7.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad64a14b1e56e702e19b24aae108f18ad1bf7777f3af5fcd39f87d0c5a814449", size = 206234, upload-time = "2026-01-14T12:55:16.571Z" }, + { url = "https://files.pythonhosted.org/packages/61/de/1975200bb0285fc921c5981d9978ce6ce11ae6d797df815add94a5a848a3/librt-0.7.8-cp312-cp312-win32.whl", hash = "sha256:0241a6ed65e6666236ea78203a73d800dbed896cf12ae25d026d75dc1fcd1dac", size = 44057, upload-time = "2026-01-14T12:55:18.077Z" }, + { url = "https://files.pythonhosted.org/packages/8e/cd/724f2d0b3461426730d4877754b65d39f06a41ac9d0a92d5c6840f72b9ae/librt-0.7.8-cp312-cp312-win_amd64.whl", hash = "sha256:6db5faf064b5bab9675c32a873436b31e01d66ca6984c6f7f92621656033a708", size = 50293, upload-time = "2026-01-14T12:55:19.179Z" }, + { url = "https://files.pythonhosted.org/packages/bd/cf/7e899acd9ee5727ad8160fdcc9994954e79fab371c66535c60e13b968ffc/librt-0.7.8-cp312-cp312-win_arm64.whl", hash = "sha256:57175aa93f804d2c08d2edb7213e09276bd49097611aefc37e3fa38d1fb99ad0", size = 43574, upload-time = "2026-01-14T12:55:20.185Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fe/b1f9de2829cf7fc7649c1dcd202cfd873837c5cc2fc9e526b0e7f716c3d2/librt-0.7.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4c3995abbbb60b3c129490fa985dfe6cac11d88fc3c36eeb4fb1449efbbb04fc", size = 57500, upload-time = "2026-01-14T12:55:21.219Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d4/4a60fbe2e53b825f5d9a77325071d61cd8af8506255067bf0c8527530745/librt-0.7.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:44e0c2cbc9bebd074cf2cdbe472ca185e824be4e74b1c63a8e934cea674bebf2", size = 59019, upload-time = "2026-01-14T12:55:22.256Z" }, + { url = "https://files.pythonhosted.org/packages/6a/37/61ff80341ba5159afa524445f2d984c30e2821f31f7c73cf166dcafa5564/librt-0.7.8-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4d2f1e492cae964b3463a03dc77a7fe8742f7855d7258c7643f0ee32b6651dd3", size = 169015, upload-time = "2026-01-14T12:55:23.24Z" }, + { url = "https://files.pythonhosted.org/packages/1c/86/13d4f2d6a93f181ebf2fc953868826653ede494559da8268023fe567fca3/librt-0.7.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:451e7ffcef8f785831fdb791bd69211f47e95dc4c6ddff68e589058806f044c6", size = 178161, upload-time = "2026-01-14T12:55:24.826Z" }, + { url = "https://files.pythonhosted.org/packages/88/26/e24ef01305954fc4d771f1f09f3dd682f9eb610e1bec188ffb719374d26e/librt-0.7.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3469e1af9f1380e093ae06bedcbdd11e407ac0b303a56bbe9afb1d6824d4982d", size = 193015, upload-time = "2026-01-14T12:55:26.04Z" }, + { url = "https://files.pythonhosted.org/packages/88/a0/92b6bd060e720d7a31ed474d046a69bd55334ec05e9c446d228c4b806ae3/librt-0.7.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f11b300027ce19a34f6d24ebb0a25fd0e24a9d53353225a5c1e6cadbf2916b2e", size = 192038, upload-time = "2026-01-14T12:55:27.208Z" }, + { url = "https://files.pythonhosted.org/packages/06/bb/6f4c650253704279c3a214dad188101d1b5ea23be0606628bc6739456624/librt-0.7.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4adc73614f0d3c97874f02f2c7fd2a27854e7e24ad532ea6b965459c5b757eca", size = 186006, upload-time = "2026-01-14T12:55:28.594Z" }, + { url = "https://files.pythonhosted.org/packages/dc/00/1c409618248d43240cadf45f3efb866837fa77e9a12a71481912135eb481/librt-0.7.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:60c299e555f87e4c01b2eca085dfccda1dde87f5a604bb45c2906b8305819a93", size = 206888, upload-time = "2026-01-14T12:55:30.214Z" }, + { url = "https://files.pythonhosted.org/packages/d9/83/b2cfe8e76ff5c1c77f8a53da3d5de62d04b5ebf7cf913e37f8bca43b5d07/librt-0.7.8-cp313-cp313-win32.whl", hash = "sha256:b09c52ed43a461994716082ee7d87618096851319bf695d57ec123f2ab708951", size = 44126, upload-time = "2026-01-14T12:55:31.44Z" }, + { url = "https://files.pythonhosted.org/packages/a9/0b/c59d45de56a51bd2d3a401fc63449c0ac163e4ef7f523ea8b0c0dee86ec5/librt-0.7.8-cp313-cp313-win_amd64.whl", hash = "sha256:f8f4a901a3fa28969d6e4519deceab56c55a09d691ea7b12ca830e2fa3461e34", size = 50262, upload-time = "2026-01-14T12:55:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b9/973455cec0a1ec592395250c474164c4a58ebf3e0651ee920fef1a2623f1/librt-0.7.8-cp313-cp313-win_arm64.whl", hash = "sha256:43d4e71b50763fcdcf64725ac680d8cfa1706c928b844794a7aa0fa9ac8e5f09", size = 43600, upload-time = "2026-01-14T12:55:34.054Z" }, + { url = "https://files.pythonhosted.org/packages/1a/73/fa8814c6ce2d49c3827829cadaa1589b0bf4391660bd4510899393a23ebc/librt-0.7.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:be927c3c94c74b05128089a955fba86501c3b544d1d300282cc1b4bd370cb418", size = 57049, upload-time = "2026-01-14T12:55:35.056Z" }, + { url = "https://files.pythonhosted.org/packages/53/fe/f6c70956da23ea235fd2e3cc16f4f0b4ebdfd72252b02d1164dd58b4e6c3/librt-0.7.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7b0803e9008c62a7ef79058233db7ff6f37a9933b8f2573c05b07ddafa226611", size = 58689, upload-time = "2026-01-14T12:55:36.078Z" }, + { url = "https://files.pythonhosted.org/packages/1f/4d/7a2481444ac5fba63050d9abe823e6bc16896f575bfc9c1e5068d516cdce/librt-0.7.8-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:79feb4d00b2a4e0e05c9c56df707934f41fcb5fe53fd9efb7549068d0495b758", size = 166808, upload-time = "2026-01-14T12:55:37.595Z" }, + { url = "https://files.pythonhosted.org/packages/ac/3c/10901d9e18639f8953f57c8986796cfbf4c1c514844a41c9197cf87cb707/librt-0.7.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9122094e3f24aa759c38f46bd8863433820654927370250f460ae75488b66ea", size = 175614, upload-time = "2026-01-14T12:55:38.756Z" }, + { url = "https://files.pythonhosted.org/packages/db/01/5cbdde0951a5090a80e5ba44e6357d375048123c572a23eecfb9326993a7/librt-0.7.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e03bea66af33c95ce3addf87a9bf1fcad8d33e757bc479957ddbc0e4f7207ac", size = 189955, upload-time = "2026-01-14T12:55:39.939Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b4/e80528d2f4b7eaf1d437fcbd6fc6ba4cbeb3e2a0cb9ed5a79f47c7318706/librt-0.7.8-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f1ade7f31675db00b514b98f9ab9a7698c7282dad4be7492589109471852d398", size = 189370, upload-time = "2026-01-14T12:55:41.057Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ab/938368f8ce31a9787ecd4becb1e795954782e4312095daf8fd22420227c8/librt-0.7.8-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a14229ac62adcf1b90a15992f1ab9c69ae8b99ffb23cb64a90878a6e8a2f5b81", size = 183224, upload-time = "2026-01-14T12:55:42.328Z" }, + { url = "https://files.pythonhosted.org/packages/3c/10/559c310e7a6e4014ac44867d359ef8238465fb499e7eb31b6bfe3e3f86f5/librt-0.7.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5bcaaf624fd24e6a0cb14beac37677f90793a96864c67c064a91458611446e83", size = 203541, upload-time = "2026-01-14T12:55:43.501Z" }, + { url = "https://files.pythonhosted.org/packages/f8/db/a0db7acdb6290c215f343835c6efda5b491bb05c3ddc675af558f50fdba3/librt-0.7.8-cp314-cp314-win32.whl", hash = "sha256:7aa7d5457b6c542ecaed79cec4ad98534373c9757383973e638ccced0f11f46d", size = 40657, upload-time = "2026-01-14T12:55:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/72/e0/4f9bdc2a98a798511e81edcd6b54fe82767a715e05d1921115ac70717f6f/librt-0.7.8-cp314-cp314-win_amd64.whl", hash = "sha256:3d1322800771bee4a91f3b4bd4e49abc7d35e65166821086e5afd1e6c0d9be44", size = 46835, upload-time = "2026-01-14T12:55:45.655Z" }, + { url = "https://files.pythonhosted.org/packages/f9/3d/59c6402e3dec2719655a41ad027a7371f8e2334aa794ed11533ad5f34969/librt-0.7.8-cp314-cp314-win_arm64.whl", hash = "sha256:5363427bc6a8c3b1719f8f3845ea53553d301382928a86e8fab7984426949bce", size = 39885, upload-time = "2026-01-14T12:55:47.138Z" }, + { url = "https://files.pythonhosted.org/packages/4e/9c/2481d80950b83085fb14ba3c595db56330d21bbc7d88a19f20165f3538db/librt-0.7.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:ca916919793a77e4a98d4a1701e345d337ce53be4a16620f063191f7322ac80f", size = 59161, upload-time = "2026-01-14T12:55:48.45Z" }, + { url = "https://files.pythonhosted.org/packages/96/79/108df2cfc4e672336765d54e3ff887294c1cc36ea4335c73588875775527/librt-0.7.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:54feb7b4f2f6706bb82325e836a01be805770443e2400f706e824e91f6441dde", size = 61008, upload-time = "2026-01-14T12:55:49.527Z" }, + { url = "https://files.pythonhosted.org/packages/46/f2/30179898f9994a5637459d6e169b6abdc982012c0a4b2d4c26f50c06f911/librt-0.7.8-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:39a4c76fee41007070f872b648cc2f711f9abf9a13d0c7162478043377b52c8e", size = 187199, upload-time = "2026-01-14T12:55:50.587Z" }, + { url = "https://files.pythonhosted.org/packages/b4/da/f7563db55cebdc884f518ba3791ad033becc25ff68eb70902b1747dc0d70/librt-0.7.8-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac9c8a458245c7de80bc1b9765b177055efff5803f08e548dd4bb9ab9a8d789b", size = 198317, upload-time = "2026-01-14T12:55:51.991Z" }, + { url = "https://files.pythonhosted.org/packages/b3/6c/4289acf076ad371471fa86718c30ae353e690d3de6167f7db36f429272f1/librt-0.7.8-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b67aa7eff150f075fda09d11f6bfb26edffd300f6ab1666759547581e8f666", size = 210334, upload-time = "2026-01-14T12:55:53.682Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7f/377521ac25b78ac0a5ff44127a0360ee6d5ddd3ce7327949876a30533daa/librt-0.7.8-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:535929b6eff670c593c34ff435d5440c3096f20fa72d63444608a5aef64dd581", size = 211031, upload-time = "2026-01-14T12:55:54.827Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b1/e1e96c3e20b23d00cf90f4aad48f0deb4cdfec2f0ed8380d0d85acf98bbf/librt-0.7.8-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:63937bd0f4d1cb56653dc7ae900d6c52c41f0015e25aaf9902481ee79943b33a", size = 204581, upload-time = "2026-01-14T12:55:56.811Z" }, + { url = "https://files.pythonhosted.org/packages/43/71/0f5d010e92ed9747e14bef35e91b6580533510f1e36a8a09eb79ee70b2f0/librt-0.7.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cf243da9e42d914036fd362ac3fa77d80a41cadcd11ad789b1b5eec4daaf67ca", size = 224731, upload-time = "2026-01-14T12:55:58.175Z" }, + { url = "https://files.pythonhosted.org/packages/22/f0/07fb6ab5c39a4ca9af3e37554f9d42f25c464829254d72e4ebbd81da351c/librt-0.7.8-cp314-cp314t-win32.whl", hash = "sha256:171ca3a0a06c643bd0a2f62a8944e1902c94aa8e5da4db1ea9a8daf872685365", size = 41173, upload-time = "2026-01-14T12:55:59.315Z" }, + { url = "https://files.pythonhosted.org/packages/24/d4/7e4be20993dc6a782639625bd2f97f3c66125c7aa80c82426956811cfccf/librt-0.7.8-cp314-cp314t-win_amd64.whl", hash = "sha256:445b7304145e24c60288a2f172b5ce2ca35c0f81605f5299f3fa567e189d2e32", size = 47668, upload-time = "2026-01-14T12:56:00.261Z" }, + { url = "https://files.pythonhosted.org/packages/fc/85/69f92b2a7b3c0f88ffe107c86b952b397004b5b8ea5a81da3d9c04c04422/librt-0.7.8-cp314-cp314t-win_arm64.whl", hash = "sha256:8766ece9de08527deabcd7cb1b4f1a967a385d26e33e536d6d8913db6ef74f06", size = 40550, upload-time = "2026-01-14T12:56:01.542Z" }, +] + +[[package]] +name = "lxml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload-time = "2025-09-22T04:04:59.287Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/8a/f8192a08237ef2fb1b19733f709db88a4c43bc8ab8357f01cb41a27e7f6a/lxml-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e77dd455b9a16bbd2a5036a63ddbd479c19572af81b624e79ef422f929eef388", size = 8590589, upload-time = "2025-09-22T04:00:10.51Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/27bcd07ae17ff5e5536e8d88f4c7d581b48963817a13de11f3ac3329bfa2/lxml-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d444858b9f07cefff6455b983aea9a67f7462ba1f6cbe4a21e8bf6791bf2153", size = 4629671, upload-time = "2025-09-22T04:00:15.411Z" }, + { url = "https://files.pythonhosted.org/packages/02/5a/a7d53b3291c324e0b6e48f3c797be63836cc52156ddf8f33cd72aac78866/lxml-6.0.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f952dacaa552f3bb8834908dddd500ba7d508e6ea6eb8c52eb2d28f48ca06a31", size = 4999961, upload-time = "2025-09-22T04:00:17.619Z" }, + { url = "https://files.pythonhosted.org/packages/f5/55/d465e9b89df1761674d8672bb3e4ae2c47033b01ec243964b6e334c6743f/lxml-6.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:71695772df6acea9f3c0e59e44ba8ac50c4f125217e84aab21074a1a55e7e5c9", size = 5157087, upload-time = "2025-09-22T04:00:19.868Z" }, + { url = "https://files.pythonhosted.org/packages/62/38/3073cd7e3e8dfc3ba3c3a139e33bee3a82de2bfb0925714351ad3d255c13/lxml-6.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:17f68764f35fd78d7c4cc4ef209a184c38b65440378013d24b8aecd327c3e0c8", size = 5067620, upload-time = "2025-09-22T04:00:21.877Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d3/1e001588c5e2205637b08985597827d3827dbaaece16348c8822bfe61c29/lxml-6.0.2-cp310-cp310-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:058027e261afed589eddcfe530fcc6f3402d7fd7e89bfd0532df82ebc1563dba", size = 5406664, upload-time = "2025-09-22T04:00:23.714Z" }, + { url = "https://files.pythonhosted.org/packages/20/cf/cab09478699b003857ed6ebfe95e9fb9fa3d3c25f1353b905c9b73cfb624/lxml-6.0.2-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8ffaeec5dfea5881d4c9d8913a32d10cfe3923495386106e4a24d45300ef79c", size = 5289397, upload-time = "2025-09-22T04:00:25.544Z" }, + { url = "https://files.pythonhosted.org/packages/a3/84/02a2d0c38ac9a8b9f9e5e1bbd3f24b3f426044ad618b552e9549ee91bd63/lxml-6.0.2-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:f2e3b1a6bb38de0bc713edd4d612969dd250ca8b724be8d460001a387507021c", size = 4772178, upload-time = "2025-09-22T04:00:27.602Z" }, + { url = "https://files.pythonhosted.org/packages/56/87/e1ceadcc031ec4aa605fe95476892d0b0ba3b7f8c7dcdf88fdeff59a9c86/lxml-6.0.2-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d6690ec5ec1cce0385cb20896b16be35247ac8c2046e493d03232f1c2414d321", size = 5358148, upload-time = "2025-09-22T04:00:29.323Z" }, + { url = "https://files.pythonhosted.org/packages/fe/13/5bb6cf42bb228353fd4ac5f162c6a84fd68a4d6f67c1031c8cf97e131fc6/lxml-6.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2a50c3c1d11cad0ebebbac357a97b26aa79d2bcaf46f256551152aa85d3a4d1", size = 5112035, upload-time = "2025-09-22T04:00:31.061Z" }, + { url = "https://files.pythonhosted.org/packages/e4/e2/ea0498552102e59834e297c5c6dff8d8ded3db72ed5e8aad77871476f073/lxml-6.0.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:3efe1b21c7801ffa29a1112fab3b0f643628c30472d507f39544fd48e9549e34", size = 4799111, upload-time = "2025-09-22T04:00:33.11Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9e/8de42b52a73abb8af86c66c969b3b4c2a96567b6ac74637c037d2e3baa60/lxml-6.0.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:59c45e125140b2c4b33920d21d83681940ca29f0b83f8629ea1a2196dc8cfe6a", size = 5351662, upload-time = "2025-09-22T04:00:35.237Z" }, + { url = "https://files.pythonhosted.org/packages/28/a2/de776a573dfb15114509a37351937c367530865edb10a90189d0b4b9b70a/lxml-6.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:452b899faa64f1805943ec1c0c9ebeaece01a1af83e130b69cdefeda180bb42c", size = 5314973, upload-time = "2025-09-22T04:00:37.086Z" }, + { url = "https://files.pythonhosted.org/packages/50/a0/3ae1b1f8964c271b5eec91db2043cf8c6c0bce101ebb2a633b51b044db6c/lxml-6.0.2-cp310-cp310-win32.whl", hash = "sha256:1e786a464c191ca43b133906c6903a7e4d56bef376b75d97ccbb8ec5cf1f0a4b", size = 3611953, upload-time = "2025-09-22T04:00:39.224Z" }, + { url = "https://files.pythonhosted.org/packages/d1/70/bd42491f0634aad41bdfc1e46f5cff98825fb6185688dc82baa35d509f1a/lxml-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:dacf3c64ef3f7440e3167aa4b49aa9e0fb99e0aa4f9ff03795640bf94531bcb0", size = 4032695, upload-time = "2025-09-22T04:00:41.402Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d0/05c6a72299f54c2c561a6c6cbb2f512e047fca20ea97a05e57931f194ac4/lxml-6.0.2-cp310-cp310-win_arm64.whl", hash = "sha256:45f93e6f75123f88d7f0cfd90f2d05f441b808562bf0bc01070a00f53f5028b5", size = 3680051, upload-time = "2025-09-22T04:00:43.525Z" }, + { url = "https://files.pythonhosted.org/packages/77/d5/becbe1e2569b474a23f0c672ead8a29ac50b2dc1d5b9de184831bda8d14c/lxml-6.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13e35cbc684aadf05d8711a5d1b5857c92e5e580efa9a0d2be197199c8def607", size = 8634365, upload-time = "2025-09-22T04:00:45.672Z" }, + { url = "https://files.pythonhosted.org/packages/28/66/1ced58f12e804644426b85d0bb8a4478ca77bc1761455da310505f1a3526/lxml-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b1675e096e17c6fe9c0e8c81434f5736c0739ff9ac6123c87c2d452f48fc938", size = 4650793, upload-time = "2025-09-22T04:00:47.783Z" }, + { url = "https://files.pythonhosted.org/packages/11/84/549098ffea39dfd167e3f174b4ce983d0eed61f9d8d25b7bf2a57c3247fc/lxml-6.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8ac6e5811ae2870953390452e3476694196f98d447573234592d30488147404d", size = 4944362, upload-time = "2025-09-22T04:00:49.845Z" }, + { url = "https://files.pythonhosted.org/packages/ac/bd/f207f16abf9749d2037453d56b643a7471d8fde855a231a12d1e095c4f01/lxml-6.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5aa0fc67ae19d7a64c3fe725dc9a1bb11f80e01f78289d05c6f62545affec438", size = 5083152, upload-time = "2025-09-22T04:00:51.709Z" }, + { url = "https://files.pythonhosted.org/packages/15/ae/bd813e87d8941d52ad5b65071b1affb48da01c4ed3c9c99e40abb266fbff/lxml-6.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de496365750cc472b4e7902a485d3f152ecf57bd3ba03ddd5578ed8ceb4c5964", size = 5023539, upload-time = "2025-09-22T04:00:53.593Z" }, + { url = "https://files.pythonhosted.org/packages/02/cd/9bfef16bd1d874fbe0cb51afb00329540f30a3283beb9f0780adbb7eec03/lxml-6.0.2-cp311-cp311-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:200069a593c5e40b8f6fc0d84d86d970ba43138c3e68619ffa234bc9bb806a4d", size = 5344853, upload-time = "2025-09-22T04:00:55.524Z" }, + { url = "https://files.pythonhosted.org/packages/b8/89/ea8f91594bc5dbb879734d35a6f2b0ad50605d7fb419de2b63d4211765cc/lxml-6.0.2-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d2de809c2ee3b888b59f995625385f74629707c9355e0ff856445cdcae682b7", size = 5225133, upload-time = "2025-09-22T04:00:57.269Z" }, + { url = "https://files.pythonhosted.org/packages/b9/37/9c735274f5dbec726b2db99b98a43950395ba3d4a1043083dba2ad814170/lxml-6.0.2-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:b2c3da8d93cf5db60e8858c17684c47d01fee6405e554fb55018dd85fc23b178", size = 4677944, upload-time = "2025-09-22T04:00:59.052Z" }, + { url = "https://files.pythonhosted.org/packages/20/28/7dfe1ba3475d8bfca3878365075abe002e05d40dfaaeb7ec01b4c587d533/lxml-6.0.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:442de7530296ef5e188373a1ea5789a46ce90c4847e597856570439621d9c553", size = 5284535, upload-time = "2025-09-22T04:01:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5f14bc0de763498fc29510e3532bf2b4b3a1c1d5d0dff2e900c16ba021ef/lxml-6.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2593c77efde7bfea7f6389f1ab249b15ed4aa5bc5cb5131faa3b843c429fbedb", size = 5067343, upload-time = "2025-09-22T04:01:03.13Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/bb8275ab5472f32b28cfbbcc6db7c9d092482d3439ca279d8d6fa02f7025/lxml-6.0.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:3e3cb08855967a20f553ff32d147e14329b3ae70ced6edc2f282b94afbc74b2a", size = 4725419, upload-time = "2025-09-22T04:01:05.013Z" }, + { url = "https://files.pythonhosted.org/packages/25/4c/7c222753bc72edca3b99dbadba1b064209bc8ed4ad448af990e60dcce462/lxml-6.0.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ed6c667fcbb8c19c6791bbf40b7268ef8ddf5a96940ba9404b9f9a304832f6c", size = 5275008, upload-time = "2025-09-22T04:01:07.327Z" }, + { url = "https://files.pythonhosted.org/packages/6c/8c/478a0dc6b6ed661451379447cdbec77c05741a75736d97e5b2b729687828/lxml-6.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b8f18914faec94132e5b91e69d76a5c1d7b0c73e2489ea8929c4aaa10b76bbf7", size = 5248906, upload-time = "2025-09-22T04:01:09.452Z" }, + { url = "https://files.pythonhosted.org/packages/2d/d9/5be3a6ab2784cdf9accb0703b65e1b64fcdd9311c9f007630c7db0cfcce1/lxml-6.0.2-cp311-cp311-win32.whl", hash = "sha256:6605c604e6daa9e0d7f0a2137bdc47a2e93b59c60a65466353e37f8272f47c46", size = 3610357, upload-time = "2025-09-22T04:01:11.102Z" }, + { url = "https://files.pythonhosted.org/packages/e2/7d/ca6fb13349b473d5732fb0ee3eec8f6c80fc0688e76b7d79c1008481bf1f/lxml-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e5867f2651016a3afd8dd2c8238baa66f1e2802f44bc17e236f547ace6647078", size = 4036583, upload-time = "2025-09-22T04:01:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a2/51363b5ecd3eab46563645f3a2c3836a2fc67d01a1b87c5017040f39f567/lxml-6.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:4197fb2534ee05fd3e7afaab5d8bfd6c2e186f65ea7f9cd6a82809c887bd1285", size = 3680591, upload-time = "2025-09-22T04:01:14.874Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887, upload-time = "2025-09-22T04:01:17.265Z" }, + { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818, upload-time = "2025-09-22T04:01:19.688Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807, upload-time = "2025-09-22T04:01:21.487Z" }, + { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179, upload-time = "2025-09-22T04:01:23.32Z" }, + { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044, upload-time = "2025-09-22T04:01:25.118Z" }, + { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685, upload-time = "2025-09-22T04:01:27.398Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127, upload-time = "2025-09-22T04:01:29.629Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958, upload-time = "2025-09-22T04:01:31.535Z" }, + { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541, upload-time = "2025-09-22T04:01:33.801Z" }, + { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426, upload-time = "2025-09-22T04:01:35.639Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917, upload-time = "2025-09-22T04:01:37.448Z" }, + { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795, upload-time = "2025-09-22T04:01:39.165Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759, upload-time = "2025-09-22T04:01:41.506Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666, upload-time = "2025-09-22T04:01:43.363Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989, upload-time = "2025-09-22T04:01:45.215Z" }, + { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456, upload-time = "2025-09-22T04:01:48.243Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793, upload-time = "2025-09-22T04:01:50.042Z" }, + { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836, upload-time = "2025-09-22T04:01:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494, upload-time = "2025-09-22T04:01:54.242Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146, upload-time = "2025-09-22T04:01:56.282Z" }, + { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932, upload-time = "2025-09-22T04:01:58.989Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060, upload-time = "2025-09-22T04:02:00.812Z" }, + { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000, upload-time = "2025-09-22T04:02:02.671Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496, upload-time = "2025-09-22T04:02:04.904Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779, upload-time = "2025-09-22T04:02:06.689Z" }, + { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072, upload-time = "2025-09-22T04:02:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675, upload-time = "2025-09-22T04:02:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171, upload-time = "2025-09-22T04:02:12.631Z" }, + { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175, upload-time = "2025-09-22T04:02:14.718Z" }, + { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688, upload-time = "2025-09-22T04:02:16.957Z" }, + { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655, upload-time = "2025-09-22T04:02:18.815Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695, upload-time = "2025-09-22T04:02:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841, upload-time = "2025-09-22T04:02:22.489Z" }, + { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700, upload-time = "2025-09-22T04:02:24.465Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347, upload-time = "2025-09-22T04:02:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248, upload-time = "2025-09-22T04:02:27.918Z" }, + { url = "https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe", size = 8659801, upload-time = "2025-09-22T04:02:30.113Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d", size = 4659403, upload-time = "2025-09-22T04:02:32.119Z" }, + { url = "https://files.pythonhosted.org/packages/00/ce/74903904339decdf7da7847bb5741fc98a5451b42fc419a86c0c13d26fe2/lxml-6.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d", size = 4966974, upload-time = "2025-09-22T04:02:34.155Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d3/131dec79ce61c5567fecf82515bd9bc36395df42501b50f7f7f3bd065df0/lxml-6.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5", size = 5102953, upload-time = "2025-09-22T04:02:36.054Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ea/a43ba9bb750d4ffdd885f2cd333572f5bb900cd2408b67fdda07e85978a0/lxml-6.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0", size = 5055054, upload-time = "2025-09-22T04:02:38.154Z" }, + { url = "https://files.pythonhosted.org/packages/60/23/6885b451636ae286c34628f70a7ed1fcc759f8d9ad382d132e1c8d3d9bfd/lxml-6.0.2-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba", size = 5352421, upload-time = "2025-09-22T04:02:40.413Z" }, + { url = "https://files.pythonhosted.org/packages/48/5b/fc2ddfc94ddbe3eebb8e9af6e3fd65e2feba4967f6a4e9683875c394c2d8/lxml-6.0.2-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0", size = 5673684, upload-time = "2025-09-22T04:02:42.288Z" }, + { url = "https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d", size = 5252463, upload-time = "2025-09-22T04:02:44.165Z" }, + { url = "https://files.pythonhosted.org/packages/9b/da/ba6eceb830c762b48e711ded880d7e3e89fc6c7323e587c36540b6b23c6b/lxml-6.0.2-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37", size = 4698437, upload-time = "2025-09-22T04:02:46.524Z" }, + { url = "https://files.pythonhosted.org/packages/a5/24/7be3f82cb7990b89118d944b619e53c656c97dc89c28cfb143fdb7cd6f4d/lxml-6.0.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9", size = 5269890, upload-time = "2025-09-22T04:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bd/dcfb9ea1e16c665efd7538fc5d5c34071276ce9220e234217682e7d2c4a5/lxml-6.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917", size = 5097185, upload-time = "2025-09-22T04:02:50.746Z" }, + { url = "https://files.pythonhosted.org/packages/21/04/a60b0ff9314736316f28316b694bccbbabe100f8483ad83852d77fc7468e/lxml-6.0.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f", size = 4745895, upload-time = "2025-09-22T04:02:52.968Z" }, + { url = "https://files.pythonhosted.org/packages/d6/bd/7d54bd1846e5a310d9c715921c5faa71cf5c0853372adf78aee70c8d7aa2/lxml-6.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8", size = 5695246, upload-time = "2025-09-22T04:02:54.798Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/5643d6ab947bc371da21323acb2a6e603cedbe71cb4c99c8254289ab6f4e/lxml-6.0.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a", size = 5260797, upload-time = "2025-09-22T04:02:57.058Z" }, + { url = "https://files.pythonhosted.org/packages/33/da/34c1ec4cff1eea7d0b4cd44af8411806ed943141804ac9c5d565302afb78/lxml-6.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c", size = 5277404, upload-time = "2025-09-22T04:02:58.966Z" }, + { url = "https://files.pythonhosted.org/packages/82/57/4eca3e31e54dc89e2c3507e1cd411074a17565fa5ffc437c4ae0a00d439e/lxml-6.0.2-cp314-cp314-win32.whl", hash = "sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b", size = 3670072, upload-time = "2025-09-22T04:03:38.05Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e0/c96cf13eccd20c9421ba910304dae0f619724dcf1702864fd59dd386404d/lxml-6.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed", size = 4080617, upload-time = "2025-09-22T04:03:39.835Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5d/b3f03e22b3d38d6f188ef044900a9b29b2fe0aebb94625ce9fe244011d34/lxml-6.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8", size = 3754930, upload-time = "2025-09-22T04:03:41.565Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5c/42c2c4c03554580708fc738d13414801f340c04c3eff90d8d2d227145275/lxml-6.0.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d", size = 8910380, upload-time = "2025-09-22T04:03:01.645Z" }, + { url = "https://files.pythonhosted.org/packages/bf/4f/12df843e3e10d18d468a7557058f8d3733e8b6e12401f30b1ef29360740f/lxml-6.0.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba", size = 4775632, upload-time = "2025-09-22T04:03:03.814Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0c/9dc31e6c2d0d418483cbcb469d1f5a582a1cd00a1f4081953d44051f3c50/lxml-6.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601", size = 4975171, upload-time = "2025-09-22T04:03:05.651Z" }, + { url = "https://files.pythonhosted.org/packages/e7/2b/9b870c6ca24c841bdd887504808f0417aa9d8d564114689266f19ddf29c8/lxml-6.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed", size = 5110109, upload-time = "2025-09-22T04:03:07.452Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0c/4f5f2a4dd319a178912751564471355d9019e220c20d7db3fb8307ed8582/lxml-6.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37", size = 5041061, upload-time = "2025-09-22T04:03:09.297Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/554eed290365267671fe001a20d72d14f468ae4e6acef1e179b039436967/lxml-6.0.2-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338", size = 5306233, upload-time = "2025-09-22T04:03:11.651Z" }, + { url = "https://files.pythonhosted.org/packages/7a/31/1d748aa275e71802ad9722df32a7a35034246b42c0ecdd8235412c3396ef/lxml-6.0.2-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9", size = 5604739, upload-time = "2025-09-22T04:03:13.592Z" }, + { url = "https://files.pythonhosted.org/packages/8f/41/2c11916bcac09ed561adccacceaedd2bf0e0b25b297ea92aab99fd03d0fa/lxml-6.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd", size = 5225119, upload-time = "2025-09-22T04:03:15.408Z" }, + { url = "https://files.pythonhosted.org/packages/99/05/4e5c2873d8f17aa018e6afde417c80cc5d0c33be4854cce3ef5670c49367/lxml-6.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d", size = 4633665, upload-time = "2025-09-22T04:03:17.262Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c9/dcc2da1bebd6275cdc723b515f93edf548b82f36a5458cca3578bc899332/lxml-6.0.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9", size = 5234997, upload-time = "2025-09-22T04:03:19.14Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e2/5172e4e7468afca64a37b81dba152fc5d90e30f9c83c7c3213d6a02a5ce4/lxml-6.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e", size = 5090957, upload-time = "2025-09-22T04:03:21.436Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b3/15461fd3e5cd4ddcb7938b87fc20b14ab113b92312fc97afe65cd7c85de1/lxml-6.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d", size = 4764372, upload-time = "2025-09-22T04:03:23.27Z" }, + { url = "https://files.pythonhosted.org/packages/05/33/f310b987c8bf9e61c4dd8e8035c416bd3230098f5e3cfa69fc4232de7059/lxml-6.0.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec", size = 5634653, upload-time = "2025-09-22T04:03:25.767Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/51c80e75e0bc9382158133bdcf4e339b5886c6ee2418b5199b3f1a61ed6d/lxml-6.0.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272", size = 5233795, upload-time = "2025-09-22T04:03:27.62Z" }, + { url = "https://files.pythonhosted.org/packages/56/4d/4856e897df0d588789dd844dbed9d91782c4ef0b327f96ce53c807e13128/lxml-6.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f", size = 5257023, upload-time = "2025-09-22T04:03:30.056Z" }, + { url = "https://files.pythonhosted.org/packages/0f/85/86766dfebfa87bea0ab78e9ff7a4b4b45225df4b4d3b8cc3c03c5cd68464/lxml-6.0.2-cp314-cp314t-win32.whl", hash = "sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312", size = 3911420, upload-time = "2025-09-22T04:03:32.198Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1a/b248b355834c8e32614650b8008c69ffeb0ceb149c793961dd8c0b991bb3/lxml-6.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca", size = 4406837, upload-time = "2025-09-22T04:03:34.027Z" }, + { url = "https://files.pythonhosted.org/packages/92/aa/df863bcc39c5e0946263454aba394de8a9084dbaff8ad143846b0d844739/lxml-6.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c", size = 3822205, upload-time = "2025-09-22T04:03:36.249Z" }, + { url = "https://files.pythonhosted.org/packages/e7/9c/780c9a8fce3f04690b374f72f41306866b0400b9d0fdf3e17aaa37887eed/lxml-6.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e748d4cf8fef2526bb2a589a417eba0c8674e29ffcb570ce2ceca44f1e567bf6", size = 3939264, upload-time = "2025-09-22T04:04:32.892Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5a/1ab260c00adf645d8bf7dec7f920f744b032f69130c681302821d5debea6/lxml-6.0.2-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4ddb1049fa0579d0cbd00503ad8c58b9ab34d1254c77bc6a5576d96ec7853dba", size = 4216435, upload-time = "2025-09-22T04:04:34.907Z" }, + { url = "https://files.pythonhosted.org/packages/f2/37/565f3b3d7ffede22874b6d86be1a1763d00f4ea9fc5b9b6ccb11e4ec8612/lxml-6.0.2-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cb233f9c95f83707dae461b12b720c1af9c28c2d19208e1be03387222151daf5", size = 4325913, upload-time = "2025-09-22T04:04:37.205Z" }, + { url = "https://files.pythonhosted.org/packages/22/ec/f3a1b169b2fb9d03467e2e3c0c752ea30e993be440a068b125fc7dd248b0/lxml-6.0.2-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bc456d04db0515ce3320d714a1eac7a97774ff0849e7718b492d957da4631dd4", size = 4269357, upload-time = "2025-09-22T04:04:39.322Z" }, + { url = "https://files.pythonhosted.org/packages/77/a2/585a28fe3e67daa1cf2f06f34490d556d121c25d500b10082a7db96e3bcd/lxml-6.0.2-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2613e67de13d619fd283d58bda40bff0ee07739f624ffee8b13b631abf33083d", size = 4412295, upload-time = "2025-09-22T04:04:41.647Z" }, + { url = "https://files.pythonhosted.org/packages/7b/d9/a57dd8bcebd7c69386c20263830d4fa72d27e6b72a229ef7a48e88952d9a/lxml-6.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:24a8e756c982c001ca8d59e87c80c4d9dcd4d9b44a4cbeb8d9be4482c514d41d", size = 3516913, upload-time = "2025-09-22T04:04:43.602Z" }, + { url = "https://files.pythonhosted.org/packages/0b/11/29d08bc103a62c0eba8016e7ed5aeebbf1e4312e83b0b1648dd203b0e87d/lxml-6.0.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1c06035eafa8404b5cf475bb37a9f6088b0aca288d4ccc9d69389750d5543700", size = 3949829, upload-time = "2025-09-22T04:04:45.608Z" }, + { url = "https://files.pythonhosted.org/packages/12/b3/52ab9a3b31e5ab8238da241baa19eec44d2ab426532441ee607165aebb52/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c7d13103045de1bdd6fe5d61802565f1a3537d70cd3abf596aa0af62761921ee", size = 4226277, upload-time = "2025-09-22T04:04:47.754Z" }, + { url = "https://files.pythonhosted.org/packages/a0/33/1eaf780c1baad88224611df13b1c2a9dfa460b526cacfe769103ff50d845/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a3c150a95fbe5ac91de323aa756219ef9cf7fde5a3f00e2281e30f33fa5fa4f", size = 4330433, upload-time = "2025-09-22T04:04:49.907Z" }, + { url = "https://files.pythonhosted.org/packages/7a/c1/27428a2ff348e994ab4f8777d3a0ad510b6b92d37718e5887d2da99952a2/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60fa43be34f78bebb27812ed90f1925ec99560b0fa1decdb7d12b84d857d31e9", size = 4272119, upload-time = "2025-09-22T04:04:51.801Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d0/3020fa12bcec4ab62f97aab026d57c2f0cfd480a558758d9ca233bb6a79d/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21c73b476d3cfe836be731225ec3421fa2f048d84f6df6a8e70433dff1376d5a", size = 4417314, upload-time = "2025-09-22T04:04:55.024Z" }, + { url = "https://files.pythonhosted.org/packages/6c/77/d7f491cbc05303ac6801651aabeb262d43f319288c1ea96c66b1d2692ff3/lxml-6.0.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:27220da5be049e936c3aca06f174e8827ca6445a4353a1995584311487fc4e3e", size = 3518768, upload-time = "2025-09-22T04:04:57.097Z" }, ] [[package]] @@ -1099,6 +1656,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, ] +[[package]] +name = "marko" +version = "2.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/2f/050b6d485f052ddf17d76a41f9334d6fb2a8a85df35347a12d97ed3bc5c1/marko-2.2.2.tar.gz", hash = "sha256:6940308e655f63733ca518c47a68ec9510279dbb916c83616e4c4b5829f052e8", size = 143641, upload-time = "2026-01-05T11:04:41.935Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/f8/36d79bac5701e6786f9880c61bbe57574760a13c1af84ab71e5ed21faecc/marko-2.2.2-py3-none-any.whl", hash = "sha256:f064ae8c10416285ad1d96048dc11e98ef04e662d3342ae416f662b70aa7959e", size = 42701, upload-time = "2026-01-05T11:04:40.75Z" }, +] + [[package]] name = "markupsafe" version = "3.0.3" @@ -1210,6 +1776,95 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7c/97/5b428225ca4524b9722c8e1b2812c35f958ec5bb6a58c274c6c07a136da8/mistralai-1.5.2-py3-none-any.whl", hash = "sha256:5b1112acebbcad1afd7732ce0bd60614975b64999801c555c54768ac41f506ae", size = 278149, upload-time = "2025-03-19T18:40:28.232Z" }, ] +[[package]] +name = "mpire" +version = "2.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/93/80ac75c20ce54c785648b4ed363c88f148bf22637e10c9863db4fbe73e74/mpire-2.10.2.tar.gz", hash = "sha256:f66a321e93fadff34585a4bfa05e95bd946cf714b442f51c529038eb45773d97", size = 271270, upload-time = "2024-05-07T14:00:31.815Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/14/1db1729ad6db4999c3a16c47937d601fcb909aaa4224f5eca5a2f145a605/mpire-2.10.2-py3-none-any.whl", hash = "sha256:d627707f7a8d02aa4c7f7d59de399dec5290945ddf7fbd36cbb1d6ebb37a51fb", size = 272756, upload-time = "2024-05-07T14:00:29.633Z" }, +] + +[package.optional-dependencies] +dill = [ + { name = "multiprocess" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "msgpack" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4d/f2/bfb55a6236ed8725a96b0aa3acbd0ec17588e6a2c3b62a93eb513ed8783f/msgpack-1.1.2.tar.gz", hash = "sha256:3b60763c1373dd60f398488069bcdc703cd08a711477b5d480eecc9f9626f47e", size = 173581, upload-time = "2025-10-08T09:15:56.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/a2/3b68a9e769db68668b25c6108444a35f9bd163bb848c0650d516761a59c0/msgpack-1.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0051fffef5a37ca2cd16978ae4f0aef92f164df86823871b5162812bebecd8e2", size = 81318, upload-time = "2025-10-08T09:14:38.722Z" }, + { url = "https://files.pythonhosted.org/packages/5b/e1/2b720cc341325c00be44e1ed59e7cfeae2678329fbf5aa68f5bda57fe728/msgpack-1.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a605409040f2da88676e9c9e5853b3449ba8011973616189ea5ee55ddbc5bc87", size = 83786, upload-time = "2025-10-08T09:14:40.082Z" }, + { url = "https://files.pythonhosted.org/packages/71/e5/c2241de64bfceac456b140737812a2ab310b10538a7b34a1d393b748e095/msgpack-1.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b696e83c9f1532b4af884045ba7f3aa741a63b2bc22617293a2c6a7c645f251", size = 398240, upload-time = "2025-10-08T09:14:41.151Z" }, + { url = "https://files.pythonhosted.org/packages/b7/09/2a06956383c0fdebaef5aa9246e2356776f12ea6f2a44bd1368abf0e46c4/msgpack-1.1.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:365c0bbe981a27d8932da71af63ef86acc59ed5c01ad929e09a0b88c6294e28a", size = 406070, upload-time = "2025-10-08T09:14:42.821Z" }, + { url = "https://files.pythonhosted.org/packages/0e/74/2957703f0e1ef20637d6aead4fbb314330c26f39aa046b348c7edcf6ca6b/msgpack-1.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:41d1a5d875680166d3ac5c38573896453bbbea7092936d2e107214daf43b1d4f", size = 393403, upload-time = "2025-10-08T09:14:44.38Z" }, + { url = "https://files.pythonhosted.org/packages/a5/09/3bfc12aa90f77b37322fc33e7a8a7c29ba7c8edeadfa27664451801b9860/msgpack-1.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:354e81bcdebaab427c3df4281187edc765d5d76bfb3a7c125af9da7a27e8458f", size = 398947, upload-time = "2025-10-08T09:14:45.56Z" }, + { url = "https://files.pythonhosted.org/packages/4b/4f/05fcebd3b4977cb3d840f7ef6b77c51f8582086de5e642f3fefee35c86fc/msgpack-1.1.2-cp310-cp310-win32.whl", hash = "sha256:e64c8d2f5e5d5fda7b842f55dec6133260ea8f53c4257d64494c534f306bf7a9", size = 64769, upload-time = "2025-10-08T09:14:47.334Z" }, + { url = "https://files.pythonhosted.org/packages/d0/3e/b4547e3a34210956382eed1c85935fff7e0f9b98be3106b3745d7dec9c5e/msgpack-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:db6192777d943bdaaafb6ba66d44bf65aa0e9c5616fa1d2da9bb08828c6b39aa", size = 71293, upload-time = "2025-10-08T09:14:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/2c/97/560d11202bcd537abca693fd85d81cebe2107ba17301de42b01ac1677b69/msgpack-1.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2e86a607e558d22985d856948c12a3fa7b42efad264dca8a3ebbcfa2735d786c", size = 82271, upload-time = "2025-10-08T09:14:49.967Z" }, + { url = "https://files.pythonhosted.org/packages/83/04/28a41024ccbd67467380b6fb440ae916c1e4f25e2cd4c63abe6835ac566e/msgpack-1.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:283ae72fc89da59aa004ba147e8fc2f766647b1251500182fac0350d8af299c0", size = 84914, upload-time = "2025-10-08T09:14:50.958Z" }, + { url = "https://files.pythonhosted.org/packages/71/46/b817349db6886d79e57a966346cf0902a426375aadc1e8e7a86a75e22f19/msgpack-1.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:61c8aa3bd513d87c72ed0b37b53dd5c5a0f58f2ff9f26e1555d3bd7948fb7296", size = 416962, upload-time = "2025-10-08T09:14:51.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/e0/6cc2e852837cd6086fe7d8406af4294e66827a60a4cf60b86575a4a65ca8/msgpack-1.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:454e29e186285d2ebe65be34629fa0e8605202c60fbc7c4c650ccd41870896ef", size = 426183, upload-time = "2025-10-08T09:14:53.477Z" }, + { url = "https://files.pythonhosted.org/packages/25/98/6a19f030b3d2ea906696cedd1eb251708e50a5891d0978b012cb6107234c/msgpack-1.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7bc8813f88417599564fafa59fd6f95be417179f76b40325b500b3c98409757c", size = 411454, upload-time = "2025-10-08T09:14:54.648Z" }, + { url = "https://files.pythonhosted.org/packages/b7/cd/9098fcb6adb32187a70b7ecaabf6339da50553351558f37600e53a4a2a23/msgpack-1.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bafca952dc13907bdfdedfc6a5f579bf4f292bdd506fadb38389afa3ac5b208e", size = 422341, upload-time = "2025-10-08T09:14:56.328Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ae/270cecbcf36c1dc85ec086b33a51a4d7d08fc4f404bdbc15b582255d05ff/msgpack-1.1.2-cp311-cp311-win32.whl", hash = "sha256:602b6740e95ffc55bfb078172d279de3773d7b7db1f703b2f1323566b878b90e", size = 64747, upload-time = "2025-10-08T09:14:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/2a/79/309d0e637f6f37e83c711f547308b91af02b72d2326ddd860b966080ef29/msgpack-1.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:d198d275222dc54244bf3327eb8cbe00307d220241d9cec4d306d49a44e85f68", size = 71633, upload-time = "2025-10-08T09:14:59.177Z" }, + { url = "https://files.pythonhosted.org/packages/73/4d/7c4e2b3d9b1106cd0aa6cb56cc57c6267f59fa8bfab7d91df5adc802c847/msgpack-1.1.2-cp311-cp311-win_arm64.whl", hash = "sha256:86f8136dfa5c116365a8a651a7d7484b65b13339731dd6faebb9a0242151c406", size = 64755, upload-time = "2025-10-08T09:15:00.48Z" }, + { url = "https://files.pythonhosted.org/packages/ad/bd/8b0d01c756203fbab65d265859749860682ccd2a59594609aeec3a144efa/msgpack-1.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:70a0dff9d1f8da25179ffcf880e10cf1aad55fdb63cd59c9a49a1b82290062aa", size = 81939, upload-time = "2025-10-08T09:15:01.472Z" }, + { url = "https://files.pythonhosted.org/packages/34/68/ba4f155f793a74c1483d4bdef136e1023f7bcba557f0db4ef3db3c665cf1/msgpack-1.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:446abdd8b94b55c800ac34b102dffd2f6aa0ce643c55dfc017ad89347db3dbdb", size = 85064, upload-time = "2025-10-08T09:15:03.764Z" }, + { url = "https://files.pythonhosted.org/packages/f2/60/a064b0345fc36c4c3d2c743c82d9100c40388d77f0b48b2f04d6041dbec1/msgpack-1.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c63eea553c69ab05b6747901b97d620bb2a690633c77f23feb0c6a947a8a7b8f", size = 417131, upload-time = "2025-10-08T09:15:05.136Z" }, + { url = "https://files.pythonhosted.org/packages/65/92/a5100f7185a800a5d29f8d14041f61475b9de465ffcc0f3b9fba606e4505/msgpack-1.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:372839311ccf6bdaf39b00b61288e0557916c3729529b301c52c2d88842add42", size = 427556, upload-time = "2025-10-08T09:15:06.837Z" }, + { url = "https://files.pythonhosted.org/packages/f5/87/ffe21d1bf7d9991354ad93949286f643b2bb6ddbeab66373922b44c3b8cc/msgpack-1.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2929af52106ca73fcb28576218476ffbb531a036c2adbcf54a3664de124303e9", size = 404920, upload-time = "2025-10-08T09:15:08.179Z" }, + { url = "https://files.pythonhosted.org/packages/ff/41/8543ed2b8604f7c0d89ce066f42007faac1eaa7d79a81555f206a5cdb889/msgpack-1.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be52a8fc79e45b0364210eef5234a7cf8d330836d0a64dfbb878efa903d84620", size = 415013, upload-time = "2025-10-08T09:15:09.83Z" }, + { url = "https://files.pythonhosted.org/packages/41/0d/2ddfaa8b7e1cee6c490d46cb0a39742b19e2481600a7a0e96537e9c22f43/msgpack-1.1.2-cp312-cp312-win32.whl", hash = "sha256:1fff3d825d7859ac888b0fbda39a42d59193543920eda9d9bea44d958a878029", size = 65096, upload-time = "2025-10-08T09:15:11.11Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ec/d431eb7941fb55a31dd6ca3404d41fbb52d99172df2e7707754488390910/msgpack-1.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:1de460f0403172cff81169a30b9a92b260cb809c4cb7e2fc79ae8d0510c78b6b", size = 72708, upload-time = "2025-10-08T09:15:12.554Z" }, + { url = "https://files.pythonhosted.org/packages/c5/31/5b1a1f70eb0e87d1678e9624908f86317787b536060641d6798e3cf70ace/msgpack-1.1.2-cp312-cp312-win_arm64.whl", hash = "sha256:be5980f3ee0e6bd44f3a9e9dea01054f175b50c3e6cdb692bc9424c0bbb8bf69", size = 64119, upload-time = "2025-10-08T09:15:13.589Z" }, + { url = "https://files.pythonhosted.org/packages/6b/31/b46518ecc604d7edf3a4f94cb3bf021fc62aa301f0cb849936968164ef23/msgpack-1.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4efd7b5979ccb539c221a4c4e16aac1a533efc97f3b759bb5a5ac9f6d10383bf", size = 81212, upload-time = "2025-10-08T09:15:14.552Z" }, + { url = "https://files.pythonhosted.org/packages/92/dc/c385f38f2c2433333345a82926c6bfa5ecfff3ef787201614317b58dd8be/msgpack-1.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:42eefe2c3e2af97ed470eec850facbe1b5ad1d6eacdbadc42ec98e7dcf68b4b7", size = 84315, upload-time = "2025-10-08T09:15:15.543Z" }, + { url = "https://files.pythonhosted.org/packages/d3/68/93180dce57f684a61a88a45ed13047558ded2be46f03acb8dec6d7c513af/msgpack-1.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1fdf7d83102bf09e7ce3357de96c59b627395352a4024f6e2458501f158bf999", size = 412721, upload-time = "2025-10-08T09:15:16.567Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ba/459f18c16f2b3fc1a1ca871f72f07d70c07bf768ad0a507a698b8052ac58/msgpack-1.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fac4be746328f90caa3cd4bc67e6fe36ca2bf61d5c6eb6d895b6527e3f05071e", size = 424657, upload-time = "2025-10-08T09:15:17.825Z" }, + { url = "https://files.pythonhosted.org/packages/38/f8/4398c46863b093252fe67368b44edc6c13b17f4e6b0e4929dbf0bdb13f23/msgpack-1.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fffee09044073e69f2bad787071aeec727183e7580443dfeb8556cbf1978d162", size = 402668, upload-time = "2025-10-08T09:15:19.003Z" }, + { url = "https://files.pythonhosted.org/packages/28/ce/698c1eff75626e4124b4d78e21cca0b4cc90043afb80a507626ea354ab52/msgpack-1.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5928604de9b032bc17f5099496417f113c45bc6bc21b5c6920caf34b3c428794", size = 419040, upload-time = "2025-10-08T09:15:20.183Z" }, + { url = "https://files.pythonhosted.org/packages/67/32/f3cd1667028424fa7001d82e10ee35386eea1408b93d399b09fb0aa7875f/msgpack-1.1.2-cp313-cp313-win32.whl", hash = "sha256:a7787d353595c7c7e145e2331abf8b7ff1e6673a6b974ded96e6d4ec09f00c8c", size = 65037, upload-time = "2025-10-08T09:15:21.416Z" }, + { url = "https://files.pythonhosted.org/packages/74/07/1ed8277f8653c40ebc65985180b007879f6a836c525b3885dcc6448ae6cb/msgpack-1.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:a465f0dceb8e13a487e54c07d04ae3ba131c7c5b95e2612596eafde1dccf64a9", size = 72631, upload-time = "2025-10-08T09:15:22.431Z" }, + { url = "https://files.pythonhosted.org/packages/e5/db/0314e4e2db56ebcf450f277904ffd84a7988b9e5da8d0d61ab2d057df2b6/msgpack-1.1.2-cp313-cp313-win_arm64.whl", hash = "sha256:e69b39f8c0aa5ec24b57737ebee40be647035158f14ed4b40e6f150077e21a84", size = 64118, upload-time = "2025-10-08T09:15:23.402Z" }, + { url = "https://files.pythonhosted.org/packages/22/71/201105712d0a2ff07b7873ed3c220292fb2ea5120603c00c4b634bcdafb3/msgpack-1.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e23ce8d5f7aa6ea6d2a2b326b4ba46c985dbb204523759984430db7114f8aa00", size = 81127, upload-time = "2025-10-08T09:15:24.408Z" }, + { url = "https://files.pythonhosted.org/packages/1b/9f/38ff9e57a2eade7bf9dfee5eae17f39fc0e998658050279cbb14d97d36d9/msgpack-1.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:6c15b7d74c939ebe620dd8e559384be806204d73b4f9356320632d783d1f7939", size = 84981, upload-time = "2025-10-08T09:15:25.812Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a9/3536e385167b88c2cc8f4424c49e28d49a6fc35206d4a8060f136e71f94c/msgpack-1.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99e2cb7b9031568a2a5c73aa077180f93dd2e95b4f8d3b8e14a73ae94a9e667e", size = 411885, upload-time = "2025-10-08T09:15:27.22Z" }, + { url = "https://files.pythonhosted.org/packages/2f/40/dc34d1a8d5f1e51fc64640b62b191684da52ca469da9cd74e84936ffa4a6/msgpack-1.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:180759d89a057eab503cf62eeec0aa61c4ea1200dee709f3a8e9397dbb3b6931", size = 419658, upload-time = "2025-10-08T09:15:28.4Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ef/2b92e286366500a09a67e03496ee8b8ba00562797a52f3c117aa2b29514b/msgpack-1.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:04fb995247a6e83830b62f0b07bf36540c213f6eac8e851166d8d86d83cbd014", size = 403290, upload-time = "2025-10-08T09:15:29.764Z" }, + { url = "https://files.pythonhosted.org/packages/78/90/e0ea7990abea5764e4655b8177aa7c63cdfa89945b6e7641055800f6c16b/msgpack-1.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:8e22ab046fa7ede9e36eeb4cfad44d46450f37bb05d5ec482b02868f451c95e2", size = 415234, upload-time = "2025-10-08T09:15:31.022Z" }, + { url = "https://files.pythonhosted.org/packages/72/4e/9390aed5db983a2310818cd7d3ec0aecad45e1f7007e0cda79c79507bb0d/msgpack-1.1.2-cp314-cp314-win32.whl", hash = "sha256:80a0ff7d4abf5fecb995fcf235d4064b9a9a8a40a3ab80999e6ac1e30b702717", size = 66391, upload-time = "2025-10-08T09:15:32.265Z" }, + { url = "https://files.pythonhosted.org/packages/6e/f1/abd09c2ae91228c5f3998dbd7f41353def9eac64253de3c8105efa2082f7/msgpack-1.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:9ade919fac6a3e7260b7f64cea89df6bec59104987cbea34d34a2fa15d74310b", size = 73787, upload-time = "2025-10-08T09:15:33.219Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b0/9d9f667ab48b16ad4115c1935d94023b82b3198064cb84a123e97f7466c1/msgpack-1.1.2-cp314-cp314-win_arm64.whl", hash = "sha256:59415c6076b1e30e563eb732e23b994a61c159cec44deaf584e5cc1dd662f2af", size = 66453, upload-time = "2025-10-08T09:15:34.225Z" }, + { url = "https://files.pythonhosted.org/packages/16/67/93f80545eb1792b61a217fa7f06d5e5cb9e0055bed867f43e2b8e012e137/msgpack-1.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:897c478140877e5307760b0ea66e0932738879e7aa68144d9b78ea4c8302a84a", size = 85264, upload-time = "2025-10-08T09:15:35.61Z" }, + { url = "https://files.pythonhosted.org/packages/87/1c/33c8a24959cf193966ef11a6f6a2995a65eb066bd681fd085afd519a57ce/msgpack-1.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a668204fa43e6d02f89dbe79a30b0d67238d9ec4c5bd8a940fc3a004a47b721b", size = 89076, upload-time = "2025-10-08T09:15:36.619Z" }, + { url = "https://files.pythonhosted.org/packages/fc/6b/62e85ff7193663fbea5c0254ef32f0c77134b4059f8da89b958beb7696f3/msgpack-1.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5559d03930d3aa0f3aacb4c42c776af1a2ace2611871c84a75afe436695e6245", size = 435242, upload-time = "2025-10-08T09:15:37.647Z" }, + { url = "https://files.pythonhosted.org/packages/c1/47/5c74ecb4cc277cf09f64e913947871682ffa82b3b93c8dad68083112f412/msgpack-1.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:70c5a7a9fea7f036b716191c29047374c10721c389c21e9ffafad04df8c52c90", size = 432509, upload-time = "2025-10-08T09:15:38.794Z" }, + { url = "https://files.pythonhosted.org/packages/24/a4/e98ccdb56dc4e98c929a3f150de1799831c0a800583cde9fa022fa90602d/msgpack-1.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f2cb069d8b981abc72b41aea1c580ce92d57c673ec61af4c500153a626cb9e20", size = 415957, upload-time = "2025-10-08T09:15:40.238Z" }, + { url = "https://files.pythonhosted.org/packages/da/28/6951f7fb67bc0a4e184a6b38ab71a92d9ba58080b27a77d3e2fb0be5998f/msgpack-1.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d62ce1f483f355f61adb5433ebfd8868c5f078d1a52d042b0a998682b4fa8c27", size = 422910, upload-time = "2025-10-08T09:15:41.505Z" }, + { url = "https://files.pythonhosted.org/packages/f0/03/42106dcded51f0a0b5284d3ce30a671e7bd3f7318d122b2ead66ad289fed/msgpack-1.1.2-cp314-cp314t-win32.whl", hash = "sha256:1d1418482b1ee984625d88aa9585db570180c286d942da463533b238b98b812b", size = 75197, upload-time = "2025-10-08T09:15:42.954Z" }, + { url = "https://files.pythonhosted.org/packages/15/86/d0071e94987f8db59d4eeb386ddc64d0bb9b10820a8d82bcd3e53eeb2da6/msgpack-1.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:5a46bf7e831d09470ad92dff02b8b1ac92175ca36b087f904a0519857c6be3ff", size = 85772, upload-time = "2025-10-08T09:15:43.954Z" }, + { url = "https://files.pythonhosted.org/packages/81/f2/08ace4142eb281c12701fc3b93a10795e4d4dc7f753911d836675050f886/msgpack-1.1.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d99ef64f349d5ec3293688e91486c5fdb925ed03807f64d98d205d2713c60b46", size = 70868, upload-time = "2025-10-08T09:15:44.959Z" }, +] + [[package]] name = "multidict" version = "6.7.0" @@ -1348,12 +2003,35 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/da/7d22601b625e241d4f23ef1ebff8acfc60da633c9e7e7922e24d10f592b3/multidict-6.7.0-py3-none-any.whl", hash = "sha256:394fc5c42a333c9ffc3e421a4c85e08580d990e08b99f6bf35b4132114c5dcb3", size = 12317, upload-time = "2025-10-06T14:52:29.272Z" }, ] +[[package]] +name = "multiprocess" +version = "0.70.19" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dill" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/f2/e783ac7f2aeeed14e9e12801f22529cc7e6b7ab80928d6dcce4e9f00922d/multiprocess-0.70.19.tar.gz", hash = "sha256:952021e0e6c55a4a9fe4cd787895b86e239a40e76802a789d6305398d3975897", size = 2079989, upload-time = "2026-01-19T06:47:39.744Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/b6/10832f96b499690854e574360be342a282f5f7dba58eff791299ff6c0637/multiprocess-0.70.19-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:02e5c35d7d6cd2bdc89c1858867f7bde4012837411023a4696c148c1bdd7c80e", size = 135131, upload-time = "2026-01-19T06:47:20.479Z" }, + { url = "https://files.pythonhosted.org/packages/99/50/faef2d8106534b0dc4a0b772668a1a99682696ebf17d3c0f13f2ed6a656a/multiprocess-0.70.19-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:79576c02d1207ec405b00cabf2c643c36070800cca433860e14539df7818b2aa", size = 135131, upload-time = "2026-01-19T06:47:21.879Z" }, + { url = "https://files.pythonhosted.org/packages/94/b1/0b71d18b76bf423c2e8ee00b31db37d17297ab3b4db44e188692afdca628/multiprocess-0.70.19-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c6b6d78d43a03b68014ca1f0b7937d965393a670c5de7c29026beb2258f2f896", size = 135134, upload-time = "2026-01-19T06:47:23.262Z" }, + { url = "https://files.pythonhosted.org/packages/7e/aa/714635c727dbfc251139226fa4eaf1b07f00dc12d9cd2eb25f931adaf873/multiprocess-0.70.19-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1bbf1b69af1cf64cd05f65337d9215b88079ec819cd0ea7bac4dab84e162efe7", size = 144743, upload-time = "2026-01-19T06:47:24.562Z" }, + { url = "https://files.pythonhosted.org/packages/0f/e1/155f6abf5e6b5d9cef29b6d0167c180846157a4aca9b9bee1a217f67c959/multiprocess-0.70.19-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:5be9ec7f0c1c49a4f4a6fd20d5dda4aeabc2d39a50f4ad53720f1cd02b3a7c2e", size = 144738, upload-time = "2026-01-19T06:47:26.636Z" }, + { url = "https://files.pythonhosted.org/packages/af/cb/f421c2869d75750a4f32301cc20c4b63fab6376e9a75c8e5e655bdeb3d9b/multiprocess-0.70.19-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1c3dce098845a0db43b32a0b76a228ca059a668071cfeaa0f40c36c0b1585d45", size = 144741, upload-time = "2026-01-19T06:47:27.985Z" }, + { url = "https://files.pythonhosted.org/packages/e3/45/8004d1e6b9185c1a444d6b55ac5682acf9d98035e54386d967366035a03a/multiprocess-0.70.19-py310-none-any.whl", hash = "sha256:97404393419dcb2a8385910864eedf47a3cadf82c66345b44f036420eb0b5d87", size = 134948, upload-time = "2026-01-19T06:47:32.325Z" }, + { url = "https://files.pythonhosted.org/packages/86/c2/dec9722dc3474c164a0b6bcd9a7ed7da542c98af8cabce05374abab35edd/multiprocess-0.70.19-py311-none-any.whl", hash = "sha256:928851ae7973aea4ce0eaf330bbdafb2e01398a91518d5c8818802845564f45c", size = 144457, upload-time = "2026-01-19T06:47:33.711Z" }, + { url = "https://files.pythonhosted.org/packages/71/70/38998b950a97ea279e6bd657575d22d1a2047256caf707d9a10fbce4f065/multiprocess-0.70.19-py312-none-any.whl", hash = "sha256:3a56c0e85dd5025161bac5ce138dcac1e49174c7d8e74596537e729fd5c53c28", size = 150281, upload-time = "2026-01-19T06:47:35.037Z" }, + { url = "https://files.pythonhosted.org/packages/7f/74/d2c27e03cb84251dfe7249b8e82923643c6d48fa4883b9476b025e7dc7eb/multiprocess-0.70.19-py313-none-any.whl", hash = "sha256:8d5eb4ec5017ba2fab4e34a747c6d2c2b6fecfe9e7236e77988db91580ada952", size = 156414, upload-time = "2026-01-19T06:47:35.915Z" }, + { url = "https://files.pythonhosted.org/packages/a0/61/af9115673a5870fd885247e2f1b68c4f1197737da315b520a91c757a861a/multiprocess-0.70.19-py314-none-any.whl", hash = "sha256:e8cc7fbdff15c0613f0a1f1f8744bef961b0a164c0ca29bdff53e9d2d93c5e5f", size = 160318, upload-time = "2026-01-19T06:47:37.497Z" }, + { url = "https://files.pythonhosted.org/packages/7e/82/69e539c4c2027f1e1697e09aaa2449243085a0edf81ae2c6341e84d769b6/multiprocess-0.70.19-py39-none-any.whl", hash = "sha256:0d4b4397ed669d371c81dcd1ef33fd384a44d6c3de1bd0ca7ac06d837720d3c5", size = 133477, upload-time = "2026-01-19T06:47:38.619Z" }, +] + [[package]] name = "my-project" version = "0.6.7" source = { virtual = "." } dependencies = [ - { name = "pipelex", extra = ["anthropic", "bedrock", "fal", "google", "google-genai", "mistralai"] }, + { name = "pipelex", extra = ["anthropic", "bedrock", "docling", "fal", "gcp-storage", "google", "google-genai", "huggingface", "mistralai", "s3"] }, ] [package.optional-dependencies] @@ -1377,7 +2055,7 @@ dev = [ requires-dist = [ { name = "boto3-stubs", marker = "extra == 'dev'", specifier = ">=1.35.24" }, { name = "mypy", marker = "extra == 'dev'", specifier = ">=1.11.2" }, - { name = "pipelex", extras = ["mistralai", "anthropic", "google", "google-genai", "bedrock", "fal"], specifier = "==0.17.3" }, + { name = "pipelex", extras = ["anthropic", "bedrock", "docling", "fal", "gcp-storage", "google", "google-genai", "huggingface", "mistralai", "s3"], editable = "../pipelex" }, { name = "pyright", marker = "extra == 'dev'", specifier = ">=1.1.405" }, { name = "pytest", marker = "extra == 'dev'", specifier = ">=9.0.1" }, { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.24.0" }, @@ -1394,48 +2072,48 @@ provides-extras = ["dev"] [[package]] name = "mypy" -version = "1.19.0" +version = "1.19.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "librt" }, + { name = "librt", marker = "platform_python_implementation != 'PyPy'" }, { name = "mypy-extensions" }, { name = "pathspec" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f9/b5/b58cdc25fadd424552804bf410855d52324183112aa004f0732c5f6324cf/mypy-1.19.0.tar.gz", hash = "sha256:f6b874ca77f733222641e5c46e4711648c4037ea13646fd0cdc814c2eaec2528", size = 3579025, upload-time = "2025-11-28T15:49:01.26Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/98/8f/55fb488c2b7dabd76e3f30c10f7ab0f6190c1fcbc3e97b1e588ec625bbe2/mypy-1.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6148ede033982a8c5ca1143de34c71836a09f105068aaa8b7d5edab2b053e6c8", size = 13093239, upload-time = "2025-11-28T15:45:11.342Z" }, - { url = "https://files.pythonhosted.org/packages/72/1b/278beea978456c56b3262266274f335c3ba5ff2c8108b3b31bec1ffa4c1d/mypy-1.19.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a9ac09e52bb0f7fb912f5d2a783345c72441a08ef56ce3e17c1752af36340a39", size = 12156128, upload-time = "2025-11-28T15:46:02.566Z" }, - { url = "https://files.pythonhosted.org/packages/21/f8/e06f951902e136ff74fd7a4dc4ef9d884faeb2f8eb9c49461235714f079f/mypy-1.19.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11f7254c15ab3f8ed68f8e8f5cbe88757848df793e31c36aaa4d4f9783fd08ab", size = 12753508, upload-time = "2025-11-28T15:44:47.538Z" }, - { url = "https://files.pythonhosted.org/packages/67/5a/d035c534ad86e09cee274d53cf0fd769c0b29ca6ed5b32e205be3c06878c/mypy-1.19.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318ba74f75899b0e78b847d8c50821e4c9637c79d9a59680fc1259f29338cb3e", size = 13507553, upload-time = "2025-11-28T15:44:39.26Z" }, - { url = "https://files.pythonhosted.org/packages/6a/17/c4a5498e00071ef29e483a01558b285d086825b61cf1fb2629fbdd019d94/mypy-1.19.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cf7d84f497f78b682edd407f14a7b6e1a2212b433eedb054e2081380b7395aa3", size = 13792898, upload-time = "2025-11-28T15:44:31.102Z" }, - { url = "https://files.pythonhosted.org/packages/67/f6/bb542422b3ee4399ae1cdc463300d2d91515ab834c6233f2fd1d52fa21e0/mypy-1.19.0-cp310-cp310-win_amd64.whl", hash = "sha256:c3385246593ac2b97f155a0e9639be906e73534630f663747c71908dfbf26134", size = 10048835, upload-time = "2025-11-28T15:48:15.744Z" }, - { url = "https://files.pythonhosted.org/packages/0f/d2/010fb171ae5ac4a01cc34fbacd7544531e5ace95c35ca166dd8fd1b901d0/mypy-1.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a31e4c28e8ddb042c84c5e977e28a21195d086aaffaf08b016b78e19c9ef8106", size = 13010563, upload-time = "2025-11-28T15:48:23.975Z" }, - { url = "https://files.pythonhosted.org/packages/41/6b/63f095c9f1ce584fdeb595d663d49e0980c735a1d2004720ccec252c5d47/mypy-1.19.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34ec1ac66d31644f194b7c163d7f8b8434f1b49719d403a5d26c87fff7e913f7", size = 12077037, upload-time = "2025-11-28T15:47:51.582Z" }, - { url = "https://files.pythonhosted.org/packages/d7/83/6cb93d289038d809023ec20eb0b48bbb1d80af40511fa077da78af6ff7c7/mypy-1.19.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cb64b0ba5980466a0f3f9990d1c582bcab8db12e29815ecb57f1408d99b4bff7", size = 12680255, upload-time = "2025-11-28T15:46:57.628Z" }, - { url = "https://files.pythonhosted.org/packages/99/db/d217815705987d2cbace2edd9100926196d6f85bcb9b5af05058d6e3c8ad/mypy-1.19.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:120cffe120cca5c23c03c77f84abc0c14c5d2e03736f6c312480020082f1994b", size = 13421472, upload-time = "2025-11-28T15:47:59.655Z" }, - { url = "https://files.pythonhosted.org/packages/4e/51/d2beaca7c497944b07594f3f8aad8d2f0e8fc53677059848ae5d6f4d193e/mypy-1.19.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7a500ab5c444268a70565e374fc803972bfd1f09545b13418a5174e29883dab7", size = 13651823, upload-time = "2025-11-28T15:45:29.318Z" }, - { url = "https://files.pythonhosted.org/packages/aa/d1/7883dcf7644db3b69490f37b51029e0870aac4a7ad34d09ceae709a3df44/mypy-1.19.0-cp311-cp311-win_amd64.whl", hash = "sha256:c14a98bc63fd867530e8ec82f217dae29d0550c86e70debc9667fff1ec83284e", size = 10049077, upload-time = "2025-11-28T15:45:39.818Z" }, - { url = "https://files.pythonhosted.org/packages/11/7e/1afa8fb188b876abeaa14460dc4983f909aaacaa4bf5718c00b2c7e0b3d5/mypy-1.19.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0fb3115cb8fa7c5f887c8a8d81ccdcb94cff334684980d847e5a62e926910e1d", size = 13207728, upload-time = "2025-11-28T15:46:26.463Z" }, - { url = "https://files.pythonhosted.org/packages/b2/13/f103d04962bcbefb1644f5ccb235998b32c337d6c13145ea390b9da47f3e/mypy-1.19.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3e19e3b897562276bb331074d64c076dbdd3e79213f36eed4e592272dabd760", size = 12202945, upload-time = "2025-11-28T15:48:49.143Z" }, - { url = "https://files.pythonhosted.org/packages/e4/93/a86a5608f74a22284a8ccea8592f6e270b61f95b8588951110ad797c2ddd/mypy-1.19.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9d491295825182fba01b6ffe2c6fe4e5a49dbf4e2bb4d1217b6ced3b4797bc6", size = 12718673, upload-time = "2025-11-28T15:47:37.193Z" }, - { url = "https://files.pythonhosted.org/packages/3d/58/cf08fff9ced0423b858f2a7495001fda28dc058136818ee9dffc31534ea9/mypy-1.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6016c52ab209919b46169651b362068f632efcd5eb8ef9d1735f6f86da7853b2", size = 13608336, upload-time = "2025-11-28T15:48:32.625Z" }, - { url = "https://files.pythonhosted.org/packages/64/ed/9c509105c5a6d4b73bb08733102a3ea62c25bc02c51bca85e3134bf912d3/mypy-1.19.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f188dcf16483b3e59f9278c4ed939ec0254aa8a60e8fc100648d9ab5ee95a431", size = 13833174, upload-time = "2025-11-28T15:45:48.091Z" }, - { url = "https://files.pythonhosted.org/packages/cd/71/01939b66e35c6f8cb3e6fdf0b657f0fd24de2f8ba5e523625c8e72328208/mypy-1.19.0-cp312-cp312-win_amd64.whl", hash = "sha256:0e3c3d1e1d62e678c339e7ade72746a9e0325de42cd2cccc51616c7b2ed1a018", size = 10112208, upload-time = "2025-11-28T15:46:41.702Z" }, - { url = "https://files.pythonhosted.org/packages/cb/0d/a1357e6bb49e37ce26fcf7e3cc55679ce9f4ebee0cd8b6ee3a0e301a9210/mypy-1.19.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7686ed65dbabd24d20066f3115018d2dce030d8fa9db01aa9f0a59b6813e9f9e", size = 13191993, upload-time = "2025-11-28T15:47:22.336Z" }, - { url = "https://files.pythonhosted.org/packages/5d/75/8e5d492a879ec4490e6ba664b5154e48c46c85b5ac9785792a5ec6a4d58f/mypy-1.19.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fd4a985b2e32f23bead72e2fb4bbe5d6aceee176be471243bd831d5b2644672d", size = 12174411, upload-time = "2025-11-28T15:44:55.492Z" }, - { url = "https://files.pythonhosted.org/packages/71/31/ad5dcee9bfe226e8eaba777e9d9d251c292650130f0450a280aec3485370/mypy-1.19.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fc51a5b864f73a3a182584b1ac75c404396a17eced54341629d8bdcb644a5bba", size = 12727751, upload-time = "2025-11-28T15:44:14.169Z" }, - { url = "https://files.pythonhosted.org/packages/77/06/b6b8994ce07405f6039701f4b66e9d23f499d0b41c6dd46ec28f96d57ec3/mypy-1.19.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:37af5166f9475872034b56c5efdcf65ee25394e9e1d172907b84577120714364", size = 13593323, upload-time = "2025-11-28T15:46:34.699Z" }, - { url = "https://files.pythonhosted.org/packages/68/b1/126e274484cccdf099a8e328d4fda1c7bdb98a5e888fa6010b00e1bbf330/mypy-1.19.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:510c014b722308c9bd377993bcbf9a07d7e0692e5fa8fc70e639c1eb19fc6bee", size = 13818032, upload-time = "2025-11-28T15:46:18.286Z" }, - { url = "https://files.pythonhosted.org/packages/f8/56/53a8f70f562dfc466c766469133a8a4909f6c0012d83993143f2a9d48d2d/mypy-1.19.0-cp313-cp313-win_amd64.whl", hash = "sha256:cabbee74f29aa9cd3b444ec2f1e4fa5a9d0d746ce7567a6a609e224429781f53", size = 10120644, upload-time = "2025-11-28T15:47:43.99Z" }, - { url = "https://files.pythonhosted.org/packages/b0/f4/7751f32f56916f7f8c229fe902cbdba3e4dd3f3ea9e8b872be97e7fc546d/mypy-1.19.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:f2e36bed3c6d9b5f35d28b63ca4b727cb0228e480826ffc8953d1892ddc8999d", size = 13185236, upload-time = "2025-11-28T15:45:20.696Z" }, - { url = "https://files.pythonhosted.org/packages/35/31/871a9531f09e78e8d145032355890384f8a5b38c95a2c7732d226b93242e/mypy-1.19.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a18d8abdda14035c5718acb748faec09571432811af129bf0d9e7b2d6699bf18", size = 12213902, upload-time = "2025-11-28T15:46:10.117Z" }, - { url = "https://files.pythonhosted.org/packages/58/b8/af221910dd40eeefa2077a59107e611550167b9994693fc5926a0b0f87c0/mypy-1.19.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f75e60aca3723a23511948539b0d7ed514dda194bc3755eae0bfc7a6b4887aa7", size = 12738600, upload-time = "2025-11-28T15:44:22.521Z" }, - { url = "https://files.pythonhosted.org/packages/11/9f/c39e89a3e319c1d9c734dedec1183b2cc3aefbab066ec611619002abb932/mypy-1.19.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f44f2ae3c58421ee05fe609160343c25f70e3967f6e32792b5a78006a9d850f", size = 13592639, upload-time = "2025-11-28T15:48:08.55Z" }, - { url = "https://files.pythonhosted.org/packages/97/6d/ffaf5f01f5e284d9033de1267e6c1b8f3783f2cf784465378a86122e884b/mypy-1.19.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:63ea6a00e4bd6822adbfc75b02ab3653a17c02c4347f5bb0cf1d5b9df3a05835", size = 13799132, upload-time = "2025-11-28T15:47:06.032Z" }, - { url = "https://files.pythonhosted.org/packages/fe/b0/c33921e73aaa0106224e5a34822411bea38046188eb781637f5a5b07e269/mypy-1.19.0-cp314-cp314-win_amd64.whl", hash = "sha256:3ad925b14a0bb99821ff6f734553294aa6a3440a8cb082fe1f5b84dfb662afb1", size = 10269832, upload-time = "2025-11-28T15:47:29.392Z" }, - { url = "https://files.pythonhosted.org/packages/09/0e/fe228ed5aeab470c6f4eb82481837fadb642a5aa95cc8215fd2214822c10/mypy-1.19.0-py3-none-any.whl", hash = "sha256:0c01c99d626380752e527d5ce8e69ffbba2046eb8a060db0329690849cf9b6f9", size = 2469714, upload-time = "2025-11-28T15:45:33.22Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/f5/db/4efed9504bc01309ab9c2da7e352cc223569f05478012b5d9ece38fd44d2/mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba", size = 3582404, upload-time = "2025-12-15T05:03:48.42Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/63/e499890d8e39b1ff2df4c0c6ce5d371b6844ee22b8250687a99fd2f657a8/mypy-1.19.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f05aa3d375b385734388e844bc01733bd33c644ab48e9684faa54e5389775ec", size = 13101333, upload-time = "2025-12-15T05:03:03.28Z" }, + { url = "https://files.pythonhosted.org/packages/72/4b/095626fc136fba96effc4fd4a82b41d688ab92124f8c4f7564bffe5cf1b0/mypy-1.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:022ea7279374af1a5d78dfcab853fe6a536eebfda4b59deab53cd21f6cd9f00b", size = 12164102, upload-time = "2025-12-15T05:02:33.611Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/952928dd081bf88a83a5ccd49aaecfcd18fd0d2710c7ff07b8fb6f7032b9/mypy-1.19.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee4c11e460685c3e0c64a4c5de82ae143622410950d6be863303a1c4ba0e36d6", size = 12765799, upload-time = "2025-12-15T05:03:28.44Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0d/93c2e4a287f74ef11a66fb6d49c7a9f05e47b0a4399040e6719b57f500d2/mypy-1.19.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de759aafbae8763283b2ee5869c7255391fbc4de3ff171f8f030b5ec48381b74", size = 13522149, upload-time = "2025-12-15T05:02:36.011Z" }, + { url = "https://files.pythonhosted.org/packages/7b/0e/33a294b56aaad2b338d203e3a1d8b453637ac36cb278b45005e0901cf148/mypy-1.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ab43590f9cd5108f41aacf9fca31841142c786827a74ab7cc8a2eacb634e09a1", size = 13810105, upload-time = "2025-12-15T05:02:40.327Z" }, + { url = "https://files.pythonhosted.org/packages/0e/fd/3e82603a0cb66b67c5e7abababce6bf1a929ddf67bf445e652684af5c5a0/mypy-1.19.1-cp310-cp310-win_amd64.whl", hash = "sha256:2899753e2f61e571b3971747e302d5f420c3fd09650e1951e99f823bc3089dac", size = 10057200, upload-time = "2025-12-15T05:02:51.012Z" }, + { url = "https://files.pythonhosted.org/packages/ef/47/6b3ebabd5474d9cdc170d1342fbf9dddc1b0ec13ec90bf9004ee6f391c31/mypy-1.19.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d8dfc6ab58ca7dda47d9237349157500468e404b17213d44fc1cb77bce532288", size = 13028539, upload-time = "2025-12-15T05:03:44.129Z" }, + { url = "https://files.pythonhosted.org/packages/5c/a6/ac7c7a88a3c9c54334f53a941b765e6ec6c4ebd65d3fe8cdcfbe0d0fd7db/mypy-1.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e3f276d8493c3c97930e354b2595a44a21348b320d859fb4a2b9f66da9ed27ab", size = 12083163, upload-time = "2025-12-15T05:03:37.679Z" }, + { url = "https://files.pythonhosted.org/packages/67/af/3afa9cf880aa4a2c803798ac24f1d11ef72a0c8079689fac5cfd815e2830/mypy-1.19.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2abb24cf3f17864770d18d673c85235ba52456b36a06b6afc1e07c1fdcd3d0e6", size = 12687629, upload-time = "2025-12-15T05:02:31.526Z" }, + { url = "https://files.pythonhosted.org/packages/2d/46/20f8a7114a56484ab268b0ab372461cb3a8f7deed31ea96b83a4e4cfcfca/mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331", size = 13436933, upload-time = "2025-12-15T05:03:15.606Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f8/33b291ea85050a21f15da910002460f1f445f8007adb29230f0adea279cb/mypy-1.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7cee03c9a2e2ee26ec07479f38ea9c884e301d42c6d43a19d20fb014e3ba925", size = 13661754, upload-time = "2025-12-15T05:02:26.731Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a3/47cbd4e85bec4335a9cd80cf67dbc02be21b5d4c9c23ad6b95d6c5196bac/mypy-1.19.1-cp311-cp311-win_amd64.whl", hash = "sha256:4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042", size = 10055772, upload-time = "2025-12-15T05:03:26.179Z" }, + { url = "https://files.pythonhosted.org/packages/06/8a/19bfae96f6615aa8a0604915512e0289b1fad33d5909bf7244f02935d33a/mypy-1.19.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8174a03289288c1f6c46d55cef02379b478bfbc8e358e02047487cad44c6ca1", size = 13206053, upload-time = "2025-12-15T05:03:46.622Z" }, + { url = "https://files.pythonhosted.org/packages/a5/34/3e63879ab041602154ba2a9f99817bb0c85c4df19a23a1443c8986e4d565/mypy-1.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffcebe56eb09ff0c0885e750036a095e23793ba6c2e894e7e63f6d89ad51f22e", size = 12219134, upload-time = "2025-12-15T05:03:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/89/cc/2db6f0e95366b630364e09845672dbee0cbf0bbe753a204b29a944967cd9/mypy-1.19.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b64d987153888790bcdb03a6473d321820597ab8dd9243b27a92153c4fa50fd2", size = 12731616, upload-time = "2025-12-15T05:02:44.725Z" }, + { url = "https://files.pythonhosted.org/packages/00/be/dd56c1fd4807bc1eba1cf18b2a850d0de7bacb55e158755eb79f77c41f8e/mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8", size = 13620847, upload-time = "2025-12-15T05:03:39.633Z" }, + { url = "https://files.pythonhosted.org/packages/6d/42/332951aae42b79329f743bf1da088cd75d8d4d9acc18fbcbd84f26c1af4e/mypy-1.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34c81968774648ab5ac09c29a375fdede03ba253f8f8287847bd480782f73a6a", size = 13834976, upload-time = "2025-12-15T05:03:08.786Z" }, + { url = "https://files.pythonhosted.org/packages/6f/63/e7493e5f90e1e085c562bb06e2eb32cae27c5057b9653348d38b47daaecc/mypy-1.19.1-cp312-cp312-win_amd64.whl", hash = "sha256:b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13", size = 10118104, upload-time = "2025-12-15T05:03:10.834Z" }, + { url = "https://files.pythonhosted.org/packages/de/9f/a6abae693f7a0c697dbb435aac52e958dc8da44e92e08ba88d2e42326176/mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3157c7594ff2ef1634ee058aafc56a82db665c9438fd41b390f3bde1ab12250", size = 13201927, upload-time = "2025-12-15T05:02:29.138Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a4/45c35ccf6e1c65afc23a069f50e2c66f46bd3798cbe0d680c12d12935caa/mypy-1.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdb12f69bcc02700c2b47e070238f42cb87f18c0bc1fc4cdb4fb2bc5fd7a3b8b", size = 12206730, upload-time = "2025-12-15T05:03:01.325Z" }, + { url = "https://files.pythonhosted.org/packages/05/bb/cdcf89678e26b187650512620eec8368fded4cfd99cfcb431e4cdfd19dec/mypy-1.19.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f859fb09d9583a985be9a493d5cfc5515b56b08f7447759a0c5deaf68d80506e", size = 12724581, upload-time = "2025-12-15T05:03:20.087Z" }, + { url = "https://files.pythonhosted.org/packages/d1/32/dd260d52babf67bad8e6770f8e1102021877ce0edea106e72df5626bb0ec/mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef", size = 13616252, upload-time = "2025-12-15T05:02:49.036Z" }, + { url = "https://files.pythonhosted.org/packages/71/d0/5e60a9d2e3bd48432ae2b454b7ef2b62a960ab51292b1eda2a95edd78198/mypy-1.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:da4869fc5e7f62a88f3fe0b5c919d1d9f7ea3cef92d3689de2823fd27e40aa75", size = 13840848, upload-time = "2025-12-15T05:02:55.95Z" }, + { url = "https://files.pythonhosted.org/packages/98/76/d32051fa65ecf6cc8c6610956473abdc9b4c43301107476ac03559507843/mypy-1.19.1-cp313-cp313-win_amd64.whl", hash = "sha256:016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd", size = 10135510, upload-time = "2025-12-15T05:02:58.438Z" }, + { url = "https://files.pythonhosted.org/packages/de/eb/b83e75f4c820c4247a58580ef86fcd35165028f191e7e1ba57128c52782d/mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1", size = 13199744, upload-time = "2025-12-15T05:03:30.823Z" }, + { url = "https://files.pythonhosted.org/packages/94/28/52785ab7bfa165f87fcbb61547a93f98bb20e7f82f90f165a1f69bce7b3d/mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718", size = 12215815, upload-time = "2025-12-15T05:02:42.323Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c6/bdd60774a0dbfb05122e3e925f2e9e846c009e479dcec4821dad881f5b52/mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b", size = 12740047, upload-time = "2025-12-15T05:03:33.168Z" }, + { url = "https://files.pythonhosted.org/packages/32/2a/66ba933fe6c76bd40d1fe916a83f04fed253152f451a877520b3c4a5e41e/mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045", size = 13601998, upload-time = "2025-12-15T05:03:13.056Z" }, + { url = "https://files.pythonhosted.org/packages/e3/da/5055c63e377c5c2418760411fd6a63ee2b96cf95397259038756c042574f/mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957", size = 13807476, upload-time = "2025-12-15T05:03:17.977Z" }, + { url = "https://files.pythonhosted.org/packages/cd/09/4ebd873390a063176f06b0dbf1f7783dd87bd120eae7727fa4ae4179b685/mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f", size = 10281872, upload-time = "2025-12-15T05:03:05.549Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f4/4ce9a05ce5ded1de3ec1c1d96cf9f9504a04e54ce0ed55cfa38619a32b8d/mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247", size = 2471239, upload-time = "2025-12-15T05:03:07.248Z" }, ] [[package]] @@ -1461,23 +2139,25 @@ wheels = [ [[package]] name = "networkx" -version = "3.6" +version = "3.6.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.11'", + "python_full_version >= '3.13'", + "python_full_version == '3.12.*'", + "python_full_version == '3.11.*'", ] -sdist = { url = "https://files.pythonhosted.org/packages/e8/fc/7b6fd4d22c8c4dc5704430140d8b3f520531d4fe7328b8f8d03f5a7950e8/networkx-3.6.tar.gz", hash = "sha256:285276002ad1f7f7da0f7b42f004bcba70d381e936559166363707fdad3d72ad", size = 2511464, upload-time = "2025-11-24T03:03:47.158Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/c7/d64168da60332c17d24c0d2f08bdf3987e8d1ae9d84b5bbd0eec2eb26a55/networkx-3.6-py3-none-any.whl", hash = "sha256:cdb395b105806062473d3be36458d8f1459a4e4b98e236a66c3a48996e07684f", size = 2063713, upload-time = "2025-11-24T03:03:45.21Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, ] [[package]] name = "nodeenv" -version = "1.9.1" +version = "1.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } +sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload-time = "2025-12-20T14:08:54.006Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, + { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload-time = "2025-12-20T14:08:52.782Z" }, ] [[package]] @@ -1547,236 +2227,576 @@ wheels = [ [[package]] name = "numpy" -version = "2.3.5" +version = "2.4.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.11'", -] -sdist = { url = "https://files.pythonhosted.org/packages/76/65/21b3bc86aac7b8f2862db1e808f1ea22b028e30a225a34a5ede9bf8678f2/numpy-2.3.5.tar.gz", hash = "sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0", size = 20584950, upload-time = "2025-11-16T22:52:42.067Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/77/84dd1d2e34d7e2792a236ba180b5e8fcc1e3e414e761ce0253f63d7f572e/numpy-2.3.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:de5672f4a7b200c15a4127042170a694d4df43c992948f5e1af57f0174beed10", size = 17034641, upload-time = "2025-11-16T22:49:19.336Z" }, - { url = "https://files.pythonhosted.org/packages/2a/ea/25e26fa5837106cde46ae7d0b667e20f69cbbc0efd64cba8221411ab26ae/numpy-2.3.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:acfd89508504a19ed06ef963ad544ec6664518c863436306153e13e94605c218", size = 12528324, upload-time = "2025-11-16T22:49:22.582Z" }, - { url = "https://files.pythonhosted.org/packages/4d/1a/e85f0eea4cf03d6a0228f5c0256b53f2df4bc794706e7df019fc622e47f1/numpy-2.3.5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ffe22d2b05504f786c867c8395de703937f934272eb67586817b46188b4ded6d", size = 5356872, upload-time = "2025-11-16T22:49:25.408Z" }, - { url = "https://files.pythonhosted.org/packages/5c/bb/35ef04afd567f4c989c2060cde39211e4ac5357155c1833bcd1166055c61/numpy-2.3.5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:872a5cf366aec6bb1147336480fef14c9164b154aeb6542327de4970282cd2f5", size = 6893148, upload-time = "2025-11-16T22:49:27.549Z" }, - { url = "https://files.pythonhosted.org/packages/f2/2b/05bbeb06e2dff5eab512dfc678b1cc5ee94d8ac5956a0885c64b6b26252b/numpy-2.3.5-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3095bdb8dd297e5920b010e96134ed91d852d81d490e787beca7e35ae1d89cf7", size = 14557282, upload-time = "2025-11-16T22:49:30.964Z" }, - { url = "https://files.pythonhosted.org/packages/65/fb/2b23769462b34398d9326081fad5655198fcf18966fcb1f1e49db44fbf31/numpy-2.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8cba086a43d54ca804ce711b2a940b16e452807acebe7852ff327f1ecd49b0d4", size = 16897903, upload-time = "2025-11-16T22:49:34.191Z" }, - { url = "https://files.pythonhosted.org/packages/ac/14/085f4cf05fc3f1e8aa95e85404e984ffca9b2275a5dc2b1aae18a67538b8/numpy-2.3.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6cf9b429b21df6b99f4dee7a1218b8b7ffbbe7df8764dc0bd60ce8a0708fed1e", size = 16341672, upload-time = "2025-11-16T22:49:37.2Z" }, - { url = "https://files.pythonhosted.org/packages/6f/3b/1f73994904142b2aa290449b3bb99772477b5fd94d787093e4f24f5af763/numpy-2.3.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:396084a36abdb603546b119d96528c2f6263921c50df3c8fd7cb28873a237748", size = 18838896, upload-time = "2025-11-16T22:49:39.727Z" }, - { url = "https://files.pythonhosted.org/packages/cd/b9/cf6649b2124f288309ffc353070792caf42ad69047dcc60da85ee85fea58/numpy-2.3.5-cp311-cp311-win32.whl", hash = "sha256:b0c7088a73aef3d687c4deef8452a3ac7c1be4e29ed8bf3b366c8111128ac60c", size = 6563608, upload-time = "2025-11-16T22:49:42.079Z" }, - { url = "https://files.pythonhosted.org/packages/aa/44/9fe81ae1dcc29c531843852e2874080dc441338574ccc4306b39e2ff6e59/numpy-2.3.5-cp311-cp311-win_amd64.whl", hash = "sha256:a414504bef8945eae5f2d7cb7be2d4af77c5d1cb5e20b296c2c25b61dff2900c", size = 13078442, upload-time = "2025-11-16T22:49:43.99Z" }, - { url = "https://files.pythonhosted.org/packages/6d/a7/f99a41553d2da82a20a2f22e93c94f928e4490bb447c9ff3c4ff230581d3/numpy-2.3.5-cp311-cp311-win_arm64.whl", hash = "sha256:0cd00b7b36e35398fa2d16af7b907b65304ef8bb4817a550e06e5012929830fa", size = 10458555, upload-time = "2025-11-16T22:49:47.092Z" }, - { url = "https://files.pythonhosted.org/packages/44/37/e669fe6cbb2b96c62f6bbedc6a81c0f3b7362f6a59230b23caa673a85721/numpy-2.3.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:74ae7b798248fe62021dbf3c914245ad45d1a6b0cb4a29ecb4b31d0bfbc4cc3e", size = 16733873, upload-time = "2025-11-16T22:49:49.84Z" }, - { url = "https://files.pythonhosted.org/packages/c5/65/df0db6c097892c9380851ab9e44b52d4f7ba576b833996e0080181c0c439/numpy-2.3.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee3888d9ff7c14604052b2ca5535a30216aa0a58e948cdd3eeb8d3415f638769", size = 12259838, upload-time = "2025-11-16T22:49:52.863Z" }, - { url = "https://files.pythonhosted.org/packages/5b/e1/1ee06e70eb2136797abe847d386e7c0e830b67ad1d43f364dd04fa50d338/numpy-2.3.5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:612a95a17655e213502f60cfb9bf9408efdc9eb1d5f50535cc6eb365d11b42b5", size = 5088378, upload-time = "2025-11-16T22:49:55.055Z" }, - { url = "https://files.pythonhosted.org/packages/6d/9c/1ca85fb86708724275103b81ec4cf1ac1d08f465368acfc8da7ab545bdae/numpy-2.3.5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3101e5177d114a593d79dd79658650fe28b5a0d8abeb8ce6f437c0e6df5be1a4", size = 6628559, upload-time = "2025-11-16T22:49:57.371Z" }, - { url = "https://files.pythonhosted.org/packages/74/78/fcd41e5a0ce4f3f7b003da85825acddae6d7ecb60cf25194741b036ca7d6/numpy-2.3.5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b973c57ff8e184109db042c842423ff4f60446239bd585a5131cc47f06f789d", size = 14250702, upload-time = "2025-11-16T22:49:59.632Z" }, - { url = "https://files.pythonhosted.org/packages/b6/23/2a1b231b8ff672b4c450dac27164a8b2ca7d9b7144f9c02d2396518352eb/numpy-2.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0d8163f43acde9a73c2a33605353a4f1bc4798745a8b1d73183b28e5b435ae28", size = 16606086, upload-time = "2025-11-16T22:50:02.127Z" }, - { url = "https://files.pythonhosted.org/packages/a0/c5/5ad26fbfbe2012e190cc7d5003e4d874b88bb18861d0829edc140a713021/numpy-2.3.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:51c1e14eb1e154ebd80e860722f9e6ed6ec89714ad2db2d3aa33c31d7c12179b", size = 16025985, upload-time = "2025-11-16T22:50:04.536Z" }, - { url = "https://files.pythonhosted.org/packages/d2/fa/dd48e225c46c819288148d9d060b047fd2a6fb1eb37eae25112ee4cb4453/numpy-2.3.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b46b4ec24f7293f23adcd2d146960559aaf8020213de8ad1909dba6c013bf89c", size = 18542976, upload-time = "2025-11-16T22:50:07.557Z" }, - { url = "https://files.pythonhosted.org/packages/05/79/ccbd23a75862d95af03d28b5c6901a1b7da4803181513d52f3b86ed9446e/numpy-2.3.5-cp312-cp312-win32.whl", hash = "sha256:3997b5b3c9a771e157f9aae01dd579ee35ad7109be18db0e85dbdbe1de06e952", size = 6285274, upload-time = "2025-11-16T22:50:10.746Z" }, - { url = "https://files.pythonhosted.org/packages/2d/57/8aeaf160312f7f489dea47ab61e430b5cb051f59a98ae68b7133ce8fa06a/numpy-2.3.5-cp312-cp312-win_amd64.whl", hash = "sha256:86945f2ee6d10cdfd67bcb4069c1662dd711f7e2a4343db5cecec06b87cf31aa", size = 12782922, upload-time = "2025-11-16T22:50:12.811Z" }, - { url = "https://files.pythonhosted.org/packages/78/a6/aae5cc2ca78c45e64b9ef22f089141d661516856cf7c8a54ba434576900d/numpy-2.3.5-cp312-cp312-win_arm64.whl", hash = "sha256:f28620fe26bee16243be2b7b874da327312240a7cdc38b769a697578d2100013", size = 10194667, upload-time = "2025-11-16T22:50:16.16Z" }, - { url = "https://files.pythonhosted.org/packages/db/69/9cde09f36da4b5a505341180a3f2e6fadc352fd4d2b7096ce9778db83f1a/numpy-2.3.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff", size = 16728251, upload-time = "2025-11-16T22:50:19.013Z" }, - { url = "https://files.pythonhosted.org/packages/79/fb/f505c95ceddd7027347b067689db71ca80bd5ecc926f913f1a23e65cf09b/numpy-2.3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188", size = 12254652, upload-time = "2025-11-16T22:50:21.487Z" }, - { url = "https://files.pythonhosted.org/packages/78/da/8c7738060ca9c31b30e9301ee0cf6c5ffdbf889d9593285a1cead337f9a5/numpy-2.3.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0", size = 5083172, upload-time = "2025-11-16T22:50:24.562Z" }, - { url = "https://files.pythonhosted.org/packages/a4/b4/ee5bb2537fb9430fd2ef30a616c3672b991a4129bb1c7dcc42aa0abbe5d7/numpy-2.3.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903", size = 6622990, upload-time = "2025-11-16T22:50:26.47Z" }, - { url = "https://files.pythonhosted.org/packages/95/03/dc0723a013c7d7c19de5ef29e932c3081df1c14ba582b8b86b5de9db7f0f/numpy-2.3.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d", size = 14248902, upload-time = "2025-11-16T22:50:28.861Z" }, - { url = "https://files.pythonhosted.org/packages/f5/10/ca162f45a102738958dcec8023062dad0cbc17d1ab99d68c4e4a6c45fb2b/numpy-2.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017", size = 16597430, upload-time = "2025-11-16T22:50:31.56Z" }, - { url = "https://files.pythonhosted.org/packages/2a/51/c1e29be863588db58175175f057286900b4b3327a1351e706d5e0f8dd679/numpy-2.3.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf", size = 16024551, upload-time = "2025-11-16T22:50:34.242Z" }, - { url = "https://files.pythonhosted.org/packages/83/68/8236589d4dbb87253d28259d04d9b814ec0ecce7cb1c7fed29729f4c3a78/numpy-2.3.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce", size = 18533275, upload-time = "2025-11-16T22:50:37.651Z" }, - { url = "https://files.pythonhosted.org/packages/40/56/2932d75b6f13465239e3b7b7e511be27f1b8161ca2510854f0b6e521c395/numpy-2.3.5-cp313-cp313-win32.whl", hash = "sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e", size = 6277637, upload-time = "2025-11-16T22:50:40.11Z" }, - { url = "https://files.pythonhosted.org/packages/0c/88/e2eaa6cffb115b85ed7c7c87775cb8bcf0816816bc98ca8dbfa2ee33fe6e/numpy-2.3.5-cp313-cp313-win_amd64.whl", hash = "sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b", size = 12779090, upload-time = "2025-11-16T22:50:42.503Z" }, - { url = "https://files.pythonhosted.org/packages/8f/88/3f41e13a44ebd4034ee17baa384acac29ba6a4fcc2aca95f6f08ca0447d1/numpy-2.3.5-cp313-cp313-win_arm64.whl", hash = "sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae", size = 10194710, upload-time = "2025-11-16T22:50:44.971Z" }, - { url = "https://files.pythonhosted.org/packages/13/cb/71744144e13389d577f867f745b7df2d8489463654a918eea2eeb166dfc9/numpy-2.3.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd", size = 16827292, upload-time = "2025-11-16T22:50:47.715Z" }, - { url = "https://files.pythonhosted.org/packages/71/80/ba9dc6f2a4398e7f42b708a7fdc841bb638d353be255655498edbf9a15a8/numpy-2.3.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f", size = 12378897, upload-time = "2025-11-16T22:50:51.327Z" }, - { url = "https://files.pythonhosted.org/packages/2e/6d/db2151b9f64264bcceccd51741aa39b50150de9b602d98ecfe7e0c4bff39/numpy-2.3.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a", size = 5207391, upload-time = "2025-11-16T22:50:54.542Z" }, - { url = "https://files.pythonhosted.org/packages/80/ae/429bacace5ccad48a14c4ae5332f6aa8ab9f69524193511d60ccdfdc65fa/numpy-2.3.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139", size = 6721275, upload-time = "2025-11-16T22:50:56.794Z" }, - { url = "https://files.pythonhosted.org/packages/74/5b/1919abf32d8722646a38cd527bc3771eb229a32724ee6ba340ead9b92249/numpy-2.3.5-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e", size = 14306855, upload-time = "2025-11-16T22:50:59.208Z" }, - { url = "https://files.pythonhosted.org/packages/a5/87/6831980559434973bebc30cd9c1f21e541a0f2b0c280d43d3afd909b66d0/numpy-2.3.5-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9", size = 16657359, upload-time = "2025-11-16T22:51:01.991Z" }, - { url = "https://files.pythonhosted.org/packages/dd/91/c797f544491ee99fd00495f12ebb7802c440c1915811d72ac5b4479a3356/numpy-2.3.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946", size = 16093374, upload-time = "2025-11-16T22:51:05.291Z" }, - { url = "https://files.pythonhosted.org/packages/74/a6/54da03253afcbe7a72785ec4da9c69fb7a17710141ff9ac5fcb2e32dbe64/numpy-2.3.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1", size = 18594587, upload-time = "2025-11-16T22:51:08.585Z" }, - { url = "https://files.pythonhosted.org/packages/80/e9/aff53abbdd41b0ecca94285f325aff42357c6b5abc482a3fcb4994290b18/numpy-2.3.5-cp313-cp313t-win32.whl", hash = "sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3", size = 6405940, upload-time = "2025-11-16T22:51:11.541Z" }, - { url = "https://files.pythonhosted.org/packages/d5/81/50613fec9d4de5480de18d4f8ef59ad7e344d497edbef3cfd80f24f98461/numpy-2.3.5-cp313-cp313t-win_amd64.whl", hash = "sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234", size = 12920341, upload-time = "2025-11-16T22:51:14.312Z" }, - { url = "https://files.pythonhosted.org/packages/bb/ab/08fd63b9a74303947f34f0bd7c5903b9c5532c2d287bead5bdf4c556c486/numpy-2.3.5-cp313-cp313t-win_arm64.whl", hash = "sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7", size = 10262507, upload-time = "2025-11-16T22:51:16.846Z" }, - { url = "https://files.pythonhosted.org/packages/ba/97/1a914559c19e32d6b2e233cf9a6a114e67c856d35b1d6babca571a3e880f/numpy-2.3.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:bf06bc2af43fa8d32d30fae16ad965663e966b1a3202ed407b84c989c3221e82", size = 16735706, upload-time = "2025-11-16T22:51:19.558Z" }, - { url = "https://files.pythonhosted.org/packages/57/d4/51233b1c1b13ecd796311216ae417796b88b0616cfd8a33ae4536330748a/numpy-2.3.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:052e8c42e0c49d2575621c158934920524f6c5da05a1d3b9bab5d8e259e045f0", size = 12264507, upload-time = "2025-11-16T22:51:22.492Z" }, - { url = "https://files.pythonhosted.org/packages/45/98/2fe46c5c2675b8306d0b4a3ec3494273e93e1226a490f766e84298576956/numpy-2.3.5-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:1ed1ec893cff7040a02c8aa1c8611b94d395590d553f6b53629a4461dc7f7b63", size = 5093049, upload-time = "2025-11-16T22:51:25.171Z" }, - { url = "https://files.pythonhosted.org/packages/ce/0e/0698378989bb0ac5f1660c81c78ab1fe5476c1a521ca9ee9d0710ce54099/numpy-2.3.5-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:2dcd0808a421a482a080f89859a18beb0b3d1e905b81e617a188bd80422d62e9", size = 6626603, upload-time = "2025-11-16T22:51:27Z" }, - { url = "https://files.pythonhosted.org/packages/5e/a6/9ca0eecc489640615642a6cbc0ca9e10df70df38c4d43f5a928ff18d8827/numpy-2.3.5-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:727fd05b57df37dc0bcf1a27767a3d9a78cbbc92822445f32cc3436ba797337b", size = 14262696, upload-time = "2025-11-16T22:51:29.402Z" }, - { url = "https://files.pythonhosted.org/packages/c8/f6/07ec185b90ec9d7217a00eeeed7383b73d7e709dae2a9a021b051542a708/numpy-2.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fffe29a1ef00883599d1dc2c51aa2e5d80afe49523c261a74933df395c15c520", size = 16597350, upload-time = "2025-11-16T22:51:32.167Z" }, - { url = "https://files.pythonhosted.org/packages/75/37/164071d1dde6a1a84c9b8e5b414fa127981bad47adf3a6b7e23917e52190/numpy-2.3.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8f7f0e05112916223d3f438f293abf0727e1181b5983f413dfa2fefc4098245c", size = 16040190, upload-time = "2025-11-16T22:51:35.403Z" }, - { url = "https://files.pythonhosted.org/packages/08/3c/f18b82a406b04859eb026d204e4e1773eb41c5be58410f41ffa511d114ae/numpy-2.3.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2e2eb32ddb9ccb817d620ac1d8dae7c3f641c1e5f55f531a33e8ab97960a75b8", size = 18536749, upload-time = "2025-11-16T22:51:39.698Z" }, - { url = "https://files.pythonhosted.org/packages/40/79/f82f572bf44cf0023a2fe8588768e23e1592585020d638999f15158609e1/numpy-2.3.5-cp314-cp314-win32.whl", hash = "sha256:66f85ce62c70b843bab1fb14a05d5737741e74e28c7b8b5a064de10142fad248", size = 6335432, upload-time = "2025-11-16T22:51:42.476Z" }, - { url = "https://files.pythonhosted.org/packages/a3/2e/235b4d96619931192c91660805e5e49242389742a7a82c27665021db690c/numpy-2.3.5-cp314-cp314-win_amd64.whl", hash = "sha256:e6a0bc88393d65807d751a614207b7129a310ca4fe76a74e5c7da5fa5671417e", size = 12919388, upload-time = "2025-11-16T22:51:45.275Z" }, - { url = "https://files.pythonhosted.org/packages/07/2b/29fd75ce45d22a39c61aad74f3d718e7ab67ccf839ca8b60866054eb15f8/numpy-2.3.5-cp314-cp314-win_arm64.whl", hash = "sha256:aeffcab3d4b43712bb7a60b65f6044d444e75e563ff6180af8f98dd4b905dfd2", size = 10476651, upload-time = "2025-11-16T22:51:47.749Z" }, - { url = "https://files.pythonhosted.org/packages/17/e1/f6a721234ebd4d87084cfa68d081bcba2f5cfe1974f7de4e0e8b9b2a2ba1/numpy-2.3.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:17531366a2e3a9e30762c000f2c43a9aaa05728712e25c11ce1dbe700c53ad41", size = 16834503, upload-time = "2025-11-16T22:51:50.443Z" }, - { url = "https://files.pythonhosted.org/packages/5c/1c/baf7ffdc3af9c356e1c135e57ab7cf8d247931b9554f55c467efe2c69eff/numpy-2.3.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d21644de1b609825ede2f48be98dfde4656aefc713654eeee280e37cadc4e0ad", size = 12381612, upload-time = "2025-11-16T22:51:53.609Z" }, - { url = "https://files.pythonhosted.org/packages/74/91/f7f0295151407ddc9ba34e699013c32c3c91944f9b35fcf9281163dc1468/numpy-2.3.5-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:c804e3a5aba5460c73955c955bdbd5c08c354954e9270a2c1565f62e866bdc39", size = 5210042, upload-time = "2025-11-16T22:51:56.213Z" }, - { url = "https://files.pythonhosted.org/packages/2e/3b/78aebf345104ec50dd50a4d06ddeb46a9ff5261c33bcc58b1c4f12f85ec2/numpy-2.3.5-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:cc0a57f895b96ec78969c34f682c602bf8da1a0270b09bc65673df2e7638ec20", size = 6724502, upload-time = "2025-11-16T22:51:58.584Z" }, - { url = "https://files.pythonhosted.org/packages/02/c6/7c34b528740512e57ef1b7c8337ab0b4f0bddf34c723b8996c675bc2bc91/numpy-2.3.5-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:900218e456384ea676e24ea6a0417f030a3b07306d29d7ad843957b40a9d8d52", size = 14308962, upload-time = "2025-11-16T22:52:01.698Z" }, - { url = "https://files.pythonhosted.org/packages/80/35/09d433c5262bc32d725bafc619e095b6a6651caf94027a03da624146f655/numpy-2.3.5-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09a1bea522b25109bf8e6f3027bd810f7c1085c64a0c7ce050c1676ad0ba010b", size = 16655054, upload-time = "2025-11-16T22:52:04.267Z" }, - { url = "https://files.pythonhosted.org/packages/7a/ab/6a7b259703c09a88804fa2430b43d6457b692378f6b74b356155283566ac/numpy-2.3.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:04822c00b5fd0323c8166d66c701dc31b7fbd252c100acd708c48f763968d6a3", size = 16091613, upload-time = "2025-11-16T22:52:08.651Z" }, - { url = "https://files.pythonhosted.org/packages/c2/88/330da2071e8771e60d1038166ff9d73f29da37b01ec3eb43cb1427464e10/numpy-2.3.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d6889ec4ec662a1a37eb4b4fb26b6100841804dac55bd9df579e326cdc146227", size = 18591147, upload-time = "2025-11-16T22:52:11.453Z" }, - { url = "https://files.pythonhosted.org/packages/51/41/851c4b4082402d9ea860c3626db5d5df47164a712cb23b54be028b184c1c/numpy-2.3.5-cp314-cp314t-win32.whl", hash = "sha256:93eebbcf1aafdf7e2ddd44c2923e2672e1010bddc014138b229e49725b4d6be5", size = 6479806, upload-time = "2025-11-16T22:52:14.641Z" }, - { url = "https://files.pythonhosted.org/packages/90/30/d48bde1dfd93332fa557cff1972fbc039e055a52021fbef4c2c4b1eefd17/numpy-2.3.5-cp314-cp314t-win_amd64.whl", hash = "sha256:c8a9958e88b65c3b27e22ca2a076311636850b612d6bbfb76e8d156aacde2aaf", size = 13105760, upload-time = "2025-11-16T22:52:17.975Z" }, - { url = "https://files.pythonhosted.org/packages/2d/fd/4b5eb0b3e888d86aee4d198c23acec7d214baaf17ea93c1adec94c9518b9/numpy-2.3.5-cp314-cp314t-win_arm64.whl", hash = "sha256:6203fdf9f3dc5bdaed7319ad8698e685c7a3be10819f41d32a0723e611733b42", size = 10545459, upload-time = "2025-11-16T22:52:20.55Z" }, - { url = "https://files.pythonhosted.org/packages/c6/65/f9dea8e109371ade9c782b4e4756a82edf9d3366bca495d84d79859a0b79/numpy-2.3.5-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f0963b55cdd70fad460fa4c1341f12f976bb26cb66021a5580329bd498988310", size = 16910689, upload-time = "2025-11-16T22:52:23.247Z" }, - { url = "https://files.pythonhosted.org/packages/00/4f/edb00032a8fb92ec0a679d3830368355da91a69cab6f3e9c21b64d0bb986/numpy-2.3.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f4255143f5160d0de972d28c8f9665d882b5f61309d8362fdd3e103cf7bf010c", size = 12457053, upload-time = "2025-11-16T22:52:26.367Z" }, - { url = "https://files.pythonhosted.org/packages/16/a4/e8a53b5abd500a63836a29ebe145fc1ab1f2eefe1cfe59276020373ae0aa/numpy-2.3.5-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:a4b9159734b326535f4dd01d947f919c6eefd2d9827466a696c44ced82dfbc18", size = 5285635, upload-time = "2025-11-16T22:52:29.266Z" }, - { url = "https://files.pythonhosted.org/packages/a3/2f/37eeb9014d9c8b3e9c55bc599c68263ca44fdbc12a93e45a21d1d56df737/numpy-2.3.5-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:2feae0d2c91d46e59fcd62784a3a83b3fb677fead592ce51b5a6fbb4f95965ff", size = 6801770, upload-time = "2025-11-16T22:52:31.421Z" }, - { url = "https://files.pythonhosted.org/packages/7d/e4/68d2f474df2cb671b2b6c2986a02e520671295647dad82484cde80ca427b/numpy-2.3.5-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffac52f28a7849ad7576293c0cb7b9f08304e8f7d738a8cb8a90ec4c55a998eb", size = 14391768, upload-time = "2025-11-16T22:52:33.593Z" }, - { url = "https://files.pythonhosted.org/packages/b8/50/94ccd8a2b141cb50651fddd4f6a48874acb3c91c8f0842b08a6afc4b0b21/numpy-2.3.5-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63c0e9e7eea69588479ebf4a8a270d5ac22763cc5854e9a7eae952a3908103f7", size = 16729263, upload-time = "2025-11-16T22:52:36.369Z" }, - { url = "https://files.pythonhosted.org/packages/2d/ee/346fa473e666fe14c52fcdd19ec2424157290a032d4c41f98127bfb31ac7/numpy-2.3.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f16417ec91f12f814b10bafe79ef77e70113a2f5f7018640e7425ff979253425", size = 12967213, upload-time = "2025-11-16T22:52:39.38Z" }, -] - -[[package]] -name = "oauthlib" -version = "3.3.1" + "python_full_version >= '3.13'", + "python_full_version == '3.12.*'", + "python_full_version == '3.11.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/24/62/ae72ff66c0f1fd959925b4c11f8c2dea61f47f6acaea75a08512cdfe3fed/numpy-2.4.1.tar.gz", hash = "sha256:a1ceafc5042451a858231588a104093474c6a5c57dcc724841f5c888d237d690", size = 20721320, upload-time = "2026-01-10T06:44:59.619Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/34/2b1bc18424f3ad9af577f6ce23600319968a70575bd7db31ce66731bbef9/numpy-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0cce2a669e3c8ba02ee563c7835f92c153cf02edff1ae05e1823f1dde21b16a5", size = 16944563, upload-time = "2026-01-10T06:42:14.615Z" }, + { url = "https://files.pythonhosted.org/packages/2c/57/26e5f97d075aef3794045a6ca9eada6a4ed70eb9a40e7a4a93f9ac80d704/numpy-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:899d2c18024984814ac7e83f8f49d8e8180e2fbe1b2e252f2e7f1d06bea92425", size = 12645658, upload-time = "2026-01-10T06:42:17.298Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ba/80fc0b1e3cb2fd5c6143f00f42eb67762aa043eaa05ca924ecc3222a7849/numpy-2.4.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:09aa8a87e45b55a1c2c205d42e2808849ece5c484b2aab11fecabec3841cafba", size = 5474132, upload-time = "2026-01-10T06:42:19.637Z" }, + { url = "https://files.pythonhosted.org/packages/40/ae/0a5b9a397f0e865ec171187c78d9b57e5588afc439a04ba9cab1ebb2c945/numpy-2.4.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:edee228f76ee2dab4579fad6f51f6a305de09d444280109e0f75df247ff21501", size = 6804159, upload-time = "2026-01-10T06:42:21.44Z" }, + { url = "https://files.pythonhosted.org/packages/86/9c/841c15e691c7085caa6fd162f063eff494099c8327aeccd509d1ab1e36ab/numpy-2.4.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a92f227dbcdc9e4c3e193add1a189a9909947d4f8504c576f4a732fd0b54240a", size = 14708058, upload-time = "2026-01-10T06:42:23.546Z" }, + { url = "https://files.pythonhosted.org/packages/5d/9d/7862db06743f489e6a502a3b93136d73aea27d97b2cf91504f70a27501d6/numpy-2.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:538bf4ec353709c765ff75ae616c34d3c3dca1a68312727e8f2676ea644f8509", size = 16651501, upload-time = "2026-01-10T06:42:25.909Z" }, + { url = "https://files.pythonhosted.org/packages/a6/9c/6fc34ebcbd4015c6e5f0c0ce38264010ce8a546cb6beacb457b84a75dfc8/numpy-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ac08c63cb7779b85e9d5318e6c3518b424bc1f364ac4cb2c6136f12e5ff2dccc", size = 16492627, upload-time = "2026-01-10T06:42:28.938Z" }, + { url = "https://files.pythonhosted.org/packages/aa/63/2494a8597502dacda439f61b3c0db4da59928150e62be0e99395c3ad23c5/numpy-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f9c360ecef085e5841c539a9a12b883dff005fbd7ce46722f5e9cef52634d82", size = 18585052, upload-time = "2026-01-10T06:42:31.312Z" }, + { url = "https://files.pythonhosted.org/packages/6a/93/098e1162ae7522fc9b618d6272b77404c4656c72432ecee3abc029aa3de0/numpy-2.4.1-cp311-cp311-win32.whl", hash = "sha256:0f118ce6b972080ba0758c6087c3617b5ba243d806268623dc34216d69099ba0", size = 6236575, upload-time = "2026-01-10T06:42:33.872Z" }, + { url = "https://files.pythonhosted.org/packages/8c/de/f5e79650d23d9e12f38a7bc6b03ea0835b9575494f8ec94c11c6e773b1b1/numpy-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:18e14c4d09d55eef39a6ab5b08406e84bc6869c1e34eef45564804f90b7e0574", size = 12604479, upload-time = "2026-01-10T06:42:35.778Z" }, + { url = "https://files.pythonhosted.org/packages/dd/65/e1097a7047cff12ce3369bd003811516b20ba1078dbdec135e1cd7c16c56/numpy-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:6461de5113088b399d655d45c3897fa188766415d0f568f175ab071c8873bd73", size = 10578325, upload-time = "2026-01-10T06:42:38.518Z" }, + { url = "https://files.pythonhosted.org/packages/78/7f/ec53e32bf10c813604edf07a3682616bd931d026fcde7b6d13195dfb684a/numpy-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d3703409aac693fa82c0aee023a1ae06a6e9d065dba10f5e8e80f642f1e9d0a2", size = 16656888, upload-time = "2026-01-10T06:42:40.913Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e0/1f9585d7dae8f14864e948fd7fa86c6cb72dee2676ca2748e63b1c5acfe0/numpy-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7211b95ca365519d3596a1d8688a95874cc94219d417504d9ecb2df99fa7bfa8", size = 12373956, upload-time = "2026-01-10T06:42:43.091Z" }, + { url = "https://files.pythonhosted.org/packages/8e/43/9762e88909ff2326f5e7536fa8cb3c49fb03a7d92705f23e6e7f553d9cb3/numpy-2.4.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5adf01965456a664fc727ed69cc71848f28d063217c63e1a0e200a118d5eec9a", size = 5202567, upload-time = "2026-01-10T06:42:45.107Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ee/34b7930eb61e79feb4478800a4b95b46566969d837546aa7c034c742ef98/numpy-2.4.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:26f0bcd9c79a00e339565b303badc74d3ea2bd6d52191eeca5f95936cad107d0", size = 6549459, upload-time = "2026-01-10T06:42:48.152Z" }, + { url = "https://files.pythonhosted.org/packages/79/e3/5f115fae982565771be994867c89bcd8d7208dbfe9469185497d70de5ddf/numpy-2.4.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0093e85df2960d7e4049664b26afc58b03236e967fb942354deef3208857a04c", size = 14404859, upload-time = "2026-01-10T06:42:49.947Z" }, + { url = "https://files.pythonhosted.org/packages/d9/7d/9c8a781c88933725445a859cac5d01b5871588a15969ee6aeb618ba99eee/numpy-2.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ad270f438cbdd402c364980317fb6b117d9ec5e226fff5b4148dd9aa9fc6e02", size = 16371419, upload-time = "2026-01-10T06:42:52.409Z" }, + { url = "https://files.pythonhosted.org/packages/a6/d2/8aa084818554543f17cf4162c42f162acbd3bb42688aefdba6628a859f77/numpy-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:297c72b1b98100c2e8f873d5d35fb551fce7040ade83d67dd51d38c8d42a2162", size = 16182131, upload-time = "2026-01-10T06:42:54.694Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/0425216684297c58a8df35f3284ef56ec4a043e6d283f8a59c53562caf1b/numpy-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cf6470d91d34bf669f61d515499859fa7a4c2f7c36434afb70e82df7217933f9", size = 18295342, upload-time = "2026-01-10T06:42:56.991Z" }, + { url = "https://files.pythonhosted.org/packages/31/4c/14cb9d86240bd8c386c881bafbe43f001284b7cce3bc01623ac9475da163/numpy-2.4.1-cp312-cp312-win32.whl", hash = "sha256:b6bcf39112e956594b3331316d90c90c90fb961e39696bda97b89462f5f3943f", size = 5959015, upload-time = "2026-01-10T06:42:59.631Z" }, + { url = "https://files.pythonhosted.org/packages/51/cf/52a703dbeb0c65807540d29699fef5fda073434ff61846a564d5c296420f/numpy-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:e1a27bb1b2dee45a2a53f5ca6ff2d1a7f135287883a1689e930d44d1ff296c87", size = 12310730, upload-time = "2026-01-10T06:43:01.627Z" }, + { url = "https://files.pythonhosted.org/packages/69/80/a828b2d0ade5e74a9fe0f4e0a17c30fdc26232ad2bc8c9f8b3197cf7cf18/numpy-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:0e6e8f9d9ecf95399982019c01223dc130542960a12edfa8edd1122dfa66a8a8", size = 10312166, upload-time = "2026-01-10T06:43:03.673Z" }, + { url = "https://files.pythonhosted.org/packages/04/68/732d4b7811c00775f3bd522a21e8dd5a23f77eb11acdeb663e4a4ebf0ef4/numpy-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d797454e37570cfd61143b73b8debd623c3c0952959adb817dd310a483d58a1b", size = 16652495, upload-time = "2026-01-10T06:43:06.283Z" }, + { url = "https://files.pythonhosted.org/packages/20/ca/857722353421a27f1465652b2c66813eeeccea9d76d5f7b74b99f298e60e/numpy-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c55962006156aeef1629b953fd359064aa47e4d82cfc8e67f0918f7da3344f", size = 12368657, upload-time = "2026-01-10T06:43:09.094Z" }, + { url = "https://files.pythonhosted.org/packages/81/0d/2377c917513449cc6240031a79d30eb9a163d32a91e79e0da47c43f2c0c8/numpy-2.4.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:71abbea030f2cfc3092a0ff9f8c8fdefdc5e0bf7d9d9c99663538bb0ecdac0b9", size = 5197256, upload-time = "2026-01-10T06:43:13.634Z" }, + { url = "https://files.pythonhosted.org/packages/17/39/569452228de3f5de9064ac75137082c6214be1f5c532016549a7923ab4b5/numpy-2.4.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5b55aa56165b17aaf15520beb9cbd33c9039810e0d9643dd4379e44294c7303e", size = 6545212, upload-time = "2026-01-10T06:43:15.661Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a4/77333f4d1e4dac4395385482557aeecf4826e6ff517e32ca48e1dafbe42a/numpy-2.4.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0faba4a331195bfa96f93dd9dfaa10b2c7aa8cda3a02b7fd635e588fe821bf5", size = 14402871, upload-time = "2026-01-10T06:43:17.324Z" }, + { url = "https://files.pythonhosted.org/packages/ba/87/d341e519956273b39d8d47969dd1eaa1af740615394fe67d06f1efa68773/numpy-2.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e3087f53e2b4428766b54932644d148613c5a595150533ae7f00dab2f319a8", size = 16359305, upload-time = "2026-01-10T06:43:19.376Z" }, + { url = "https://files.pythonhosted.org/packages/32/91/789132c6666288eaa20ae8066bb99eba1939362e8f1a534949a215246e97/numpy-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:49e792ec351315e16da54b543db06ca8a86985ab682602d90c60ef4ff4db2a9c", size = 16181909, upload-time = "2026-01-10T06:43:21.808Z" }, + { url = "https://files.pythonhosted.org/packages/cf/b8/090b8bd27b82a844bb22ff8fdf7935cb1980b48d6e439ae116f53cdc2143/numpy-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79e9e06c4c2379db47f3f6fc7a8652e7498251789bf8ff5bd43bf478ef314ca2", size = 18284380, upload-time = "2026-01-10T06:43:23.957Z" }, + { url = "https://files.pythonhosted.org/packages/67/78/722b62bd31842ff029412271556a1a27a98f45359dea78b1548a3a9996aa/numpy-2.4.1-cp313-cp313-win32.whl", hash = "sha256:3d1a100e48cb266090a031397863ff8a30050ceefd798f686ff92c67a486753d", size = 5957089, upload-time = "2026-01-10T06:43:27.535Z" }, + { url = "https://files.pythonhosted.org/packages/da/a6/cf32198b0b6e18d4fbfa9a21a992a7fca535b9bb2b0cdd217d4a3445b5ca/numpy-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:92a0e65272fd60bfa0d9278e0484c2f52fe03b97aedc02b357f33fe752c52ffb", size = 12307230, upload-time = "2026-01-10T06:43:29.298Z" }, + { url = "https://files.pythonhosted.org/packages/44/6c/534d692bfb7d0afe30611320c5fb713659dcb5104d7cc182aff2aea092f5/numpy-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:20d4649c773f66cc2fc36f663e091f57c3b7655f936a4c681b4250855d1da8f5", size = 10313125, upload-time = "2026-01-10T06:43:31.782Z" }, + { url = "https://files.pythonhosted.org/packages/da/a1/354583ac5c4caa566de6ddfbc42744409b515039e085fab6e0ff942e0df5/numpy-2.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f93bc6892fe7b0663e5ffa83b61aab510aacffd58c16e012bb9352d489d90cb7", size = 12496156, upload-time = "2026-01-10T06:43:34.237Z" }, + { url = "https://files.pythonhosted.org/packages/51/b0/42807c6e8cce58c00127b1dc24d365305189991f2a7917aa694a109c8d7d/numpy-2.4.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:178de8f87948163d98a4c9ab5bee4ce6519ca918926ec8df195af582de28544d", size = 5324663, upload-time = "2026-01-10T06:43:36.211Z" }, + { url = "https://files.pythonhosted.org/packages/fe/55/7a621694010d92375ed82f312b2f28017694ed784775269115323e37f5e2/numpy-2.4.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:98b35775e03ab7f868908b524fc0a84d38932d8daf7b7e1c3c3a1b6c7a2c9f15", size = 6645224, upload-time = "2026-01-10T06:43:37.884Z" }, + { url = "https://files.pythonhosted.org/packages/50/96/9fa8635ed9d7c847d87e30c834f7109fac5e88549d79ef3324ab5c20919f/numpy-2.4.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:941c2a93313d030f219f3a71fd3d91a728b82979a5e8034eb2e60d394a2b83f9", size = 14462352, upload-time = "2026-01-10T06:43:39.479Z" }, + { url = "https://files.pythonhosted.org/packages/03/d1/8cf62d8bb2062da4fb82dd5d49e47c923f9c0738032f054e0a75342faba7/numpy-2.4.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:529050522e983e00a6c1c6b67411083630de8b57f65e853d7b03d9281b8694d2", size = 16407279, upload-time = "2026-01-10T06:43:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/86/1c/95c86e17c6b0b31ce6ef219da00f71113b220bcb14938c8d9a05cee0ff53/numpy-2.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2302dc0224c1cbc49bb94f7064f3f923a971bfae45c33870dcbff63a2a550505", size = 16248316, upload-time = "2026-01-10T06:43:44.121Z" }, + { url = "https://files.pythonhosted.org/packages/30/b4/e7f5ff8697274c9d0fa82398b6a372a27e5cef069b37df6355ccb1f1db1a/numpy-2.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9171a42fcad32dcf3fa86f0a4faa5e9f8facefdb276f54b8b390d90447cff4e2", size = 18329884, upload-time = "2026-01-10T06:43:46.613Z" }, + { url = "https://files.pythonhosted.org/packages/37/a4/b073f3e9d77f9aec8debe8ca7f9f6a09e888ad1ba7488f0c3b36a94c03ac/numpy-2.4.1-cp313-cp313t-win32.whl", hash = "sha256:382ad67d99ef49024f11d1ce5dcb5ad8432446e4246a4b014418ba3a1175a1f4", size = 6081138, upload-time = "2026-01-10T06:43:48.854Z" }, + { url = "https://files.pythonhosted.org/packages/16/16/af42337b53844e67752a092481ab869c0523bc95c4e5c98e4dac4e9581ac/numpy-2.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:62fea415f83ad8fdb6c20840578e5fbaf5ddd65e0ec6c3c47eda0f69da172510", size = 12447478, upload-time = "2026-01-10T06:43:50.476Z" }, + { url = "https://files.pythonhosted.org/packages/6c/f8/fa85b2eac68ec631d0b631abc448552cb17d39afd17ec53dcbcc3537681a/numpy-2.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:a7870e8c5fc11aef57d6fea4b4085e537a3a60ad2cdd14322ed531fdca68d261", size = 10382981, upload-time = "2026-01-10T06:43:52.575Z" }, + { url = "https://files.pythonhosted.org/packages/1b/a7/ef08d25698e0e4b4efbad8d55251d20fe2a15f6d9aa7c9b30cd03c165e6f/numpy-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3869ea1ee1a1edc16c29bbe3a2f2a4e515cc3a44d43903ad41e0cacdbaf733dc", size = 16652046, upload-time = "2026-01-10T06:43:54.797Z" }, + { url = "https://files.pythonhosted.org/packages/8f/39/e378b3e3ca13477e5ac70293ec027c438d1927f18637e396fe90b1addd72/numpy-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e867df947d427cdd7a60e3e271729090b0f0df80f5f10ab7dd436f40811699c3", size = 12378858, upload-time = "2026-01-10T06:43:57.099Z" }, + { url = "https://files.pythonhosted.org/packages/c3/74/7ec6154f0006910ed1fdbb7591cf4432307033102b8a22041599935f8969/numpy-2.4.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:e3bd2cb07841166420d2fa7146c96ce00cb3410664cbc1a6be028e456c4ee220", size = 5207417, upload-time = "2026-01-10T06:43:59.037Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b7/053ac11820d84e42f8feea5cb81cc4fcd1091499b45b1ed8c7415b1bf831/numpy-2.4.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:f0a90aba7d521e6954670550e561a4cb925713bd944445dbe9e729b71f6cabee", size = 6542643, upload-time = "2026-01-10T06:44:01.852Z" }, + { url = "https://files.pythonhosted.org/packages/c0/c4/2e7908915c0e32ca636b92e4e4a3bdec4cb1e7eb0f8aedf1ed3c68a0d8cd/numpy-2.4.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d558123217a83b2d1ba316b986e9248a1ed1971ad495963d555ccd75dcb1556", size = 14418963, upload-time = "2026-01-10T06:44:04.047Z" }, + { url = "https://files.pythonhosted.org/packages/eb/c0/3ed5083d94e7ffd7c404e54619c088e11f2e1939a9544f5397f4adb1b8ba/numpy-2.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f44de05659b67d20499cbc96d49f2650769afcb398b79b324bb6e297bfe3844", size = 16363811, upload-time = "2026-01-10T06:44:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/0e/68/42b66f1852bf525050a67315a4fb94586ab7e9eaa541b1bef530fab0c5dd/numpy-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:69e7419c9012c4aaf695109564e3387f1259f001b4326dfa55907b098af082d3", size = 16197643, upload-time = "2026-01-10T06:44:08.33Z" }, + { url = "https://files.pythonhosted.org/packages/d2/40/e8714fc933d85f82c6bfc7b998a0649ad9769a32f3494ba86598aaf18a48/numpy-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2ffd257026eb1b34352e749d7cc1678b5eeec3e329ad8c9965a797e08ccba205", size = 18289601, upload-time = "2026-01-10T06:44:10.841Z" }, + { url = "https://files.pythonhosted.org/packages/80/9a/0d44b468cad50315127e884802351723daca7cf1c98d102929468c81d439/numpy-2.4.1-cp314-cp314-win32.whl", hash = "sha256:727c6c3275ddefa0dc078524a85e064c057b4f4e71ca5ca29a19163c607be745", size = 6005722, upload-time = "2026-01-10T06:44:13.332Z" }, + { url = "https://files.pythonhosted.org/packages/7e/bb/c6513edcce5a831810e2dddc0d3452ce84d208af92405a0c2e58fd8e7881/numpy-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:7d5d7999df434a038d75a748275cd6c0094b0ecdb0837342b332a82defc4dc4d", size = 12438590, upload-time = "2026-01-10T06:44:15.006Z" }, + { url = "https://files.pythonhosted.org/packages/e9/da/a598d5cb260780cf4d255102deba35c1d072dc028c4547832f45dd3323a8/numpy-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:ce9ce141a505053b3c7bce3216071f3bf5c182b8b28930f14cd24d43932cd2df", size = 10596180, upload-time = "2026-01-10T06:44:17.386Z" }, + { url = "https://files.pythonhosted.org/packages/de/bc/ea3f2c96fcb382311827231f911723aeff596364eb6e1b6d1d91128aa29b/numpy-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4e53170557d37ae404bf8d542ca5b7c629d6efa1117dac6a83e394142ea0a43f", size = 12498774, upload-time = "2026-01-10T06:44:19.467Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ab/ef9d939fe4a812648c7a712610b2ca6140b0853c5efea361301006c02ae5/numpy-2.4.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:a73044b752f5d34d4232f25f18160a1cc418ea4507f5f11e299d8ac36875f8a0", size = 5327274, upload-time = "2026-01-10T06:44:23.189Z" }, + { url = "https://files.pythonhosted.org/packages/bd/31/d381368e2a95c3b08b8cf7faac6004849e960f4a042d920337f71cef0cae/numpy-2.4.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:fb1461c99de4d040666ca0444057b06541e5642f800b71c56e6ea92d6a853a0c", size = 6648306, upload-time = "2026-01-10T06:44:25.012Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e5/0989b44ade47430be6323d05c23207636d67d7362a1796ccbccac6773dd2/numpy-2.4.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423797bdab2eeefbe608d7c1ec7b2b4fd3c58d51460f1ee26c7500a1d9c9ee93", size = 14464653, upload-time = "2026-01-10T06:44:26.706Z" }, + { url = "https://files.pythonhosted.org/packages/10/a7/cfbe475c35371cae1358e61f20c5f075badc18c4797ab4354140e1d283cf/numpy-2.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:52b5f61bdb323b566b528899cc7db2ba5d1015bda7ea811a8bcf3c89c331fa42", size = 16405144, upload-time = "2026-01-10T06:44:29.378Z" }, + { url = "https://files.pythonhosted.org/packages/f8/a3/0c63fe66b534888fa5177cc7cef061541064dbe2b4b60dcc60ffaf0d2157/numpy-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42d7dd5fa36d16d52a84f821eb96031836fd405ee6955dd732f2023724d0aa01", size = 16247425, upload-time = "2026-01-10T06:44:31.721Z" }, + { url = "https://files.pythonhosted.org/packages/6b/2b/55d980cfa2c93bd40ff4c290bf824d792bd41d2fe3487b07707559071760/numpy-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7b6b5e28bbd47b7532698e5db2fe1db693d84b58c254e4389d99a27bb9b8f6b", size = 18330053, upload-time = "2026-01-10T06:44:34.617Z" }, + { url = "https://files.pythonhosted.org/packages/23/12/8b5fc6b9c487a09a7957188e0943c9ff08432c65e34567cabc1623b03a51/numpy-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:5de60946f14ebe15e713a6f22850c2372fa72f4ff9a432ab44aa90edcadaa65a", size = 6152482, upload-time = "2026-01-10T06:44:36.798Z" }, + { url = "https://files.pythonhosted.org/packages/00/a5/9f8ca5856b8940492fc24fbe13c1bc34d65ddf4079097cf9e53164d094e1/numpy-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8f085da926c0d491ffff3096f91078cc97ea67e7e6b65e490bc8dcda65663be2", size = 12627117, upload-time = "2026-01-10T06:44:38.828Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0d/eca3d962f9eef265f01a8e0d20085c6dd1f443cbffc11b6dede81fd82356/numpy-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:6436cffb4f2bf26c974344439439c95e152c9a527013f26b3577be6c2ca64295", size = 10667121, upload-time = "2026-01-10T06:44:41.644Z" }, + { url = "https://files.pythonhosted.org/packages/1e/48/d86f97919e79314a1cdee4c832178763e6e98e623e123d0bada19e92c15a/numpy-2.4.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8ad35f20be147a204e28b6a0575fbf3540c5e5f802634d4258d55b1ff5facce1", size = 16822202, upload-time = "2026-01-10T06:44:43.738Z" }, + { url = "https://files.pythonhosted.org/packages/51/e9/1e62a7f77e0f37dcfb0ad6a9744e65df00242b6ea37dfafb55debcbf5b55/numpy-2.4.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:8097529164c0f3e32bb89412a0905d9100bf434d9692d9fc275e18dcf53c9344", size = 12569985, upload-time = "2026-01-10T06:44:45.945Z" }, + { url = "https://files.pythonhosted.org/packages/c7/7e/914d54f0c801342306fdcdce3e994a56476f1b818c46c47fc21ae968088c/numpy-2.4.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ea66d2b41ca4a1630aae5507ee0a71647d3124d1741980138aa8f28f44dac36e", size = 5398484, upload-time = "2026-01-10T06:44:48.012Z" }, + { url = "https://files.pythonhosted.org/packages/1c/d8/9570b68584e293a33474e7b5a77ca404f1dcc655e40050a600dee81d27fb/numpy-2.4.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d3f8f0df9f4b8be57b3bf74a1d087fec68f927a2fab68231fdb442bf2c12e426", size = 6713216, upload-time = "2026-01-10T06:44:49.725Z" }, + { url = "https://files.pythonhosted.org/packages/33/9b/9dd6e2db8d49eb24f86acaaa5258e5f4c8ed38209a4ee9de2d1a0ca25045/numpy-2.4.1-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2023ef86243690c2791fd6353e5b4848eedaa88ca8a2d129f462049f6d484696", size = 14538937, upload-time = "2026-01-10T06:44:51.498Z" }, + { url = "https://files.pythonhosted.org/packages/53/87/d5bd995b0f798a37105b876350d346eea5838bd8f77ea3d7a48392f3812b/numpy-2.4.1-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8361ea4220d763e54cff2fbe7d8c93526b744f7cd9ddab47afeff7e14e8503be", size = 16479830, upload-time = "2026-01-10T06:44:53.931Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c7/b801bf98514b6ae6475e941ac05c58e6411dd863ea92916bfd6d510b08c1/numpy-2.4.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:4f1b68ff47680c2925f8063402a693ede215f0257f02596b1318ecdfb1d79e33", size = 12492579, upload-time = "2026-01-10T06:44:57.094Z" }, +] + +[[package]] +name = "nvidia-cublas-cu12" +version = "12.8.4.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921, upload-time = "2025-03-07T01:44:31.254Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/02/2adcaa145158bf1a8295d83591d22e4103dbfd821bcaf6f3f53151ca4ffa/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182", size = 10248621, upload-time = "2025-03-07T01:40:21.213Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.8.93" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/6b/32f747947df2da6994e999492ab306a903659555dddc0fbdeb9d71f75e52/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994", size = 88040029, upload-time = "2025-03-07T01:42:13.562Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/9b/a997b638fcd068ad6e4d53b8551a7d30fe8b404d6f1804abf1df69838932/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90", size = 954765, upload-time = "2025-03-07T01:40:01.615Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "9.10.2.21" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918, upload-time = "2025-06-19T22:48:08.269Z" } +dependencies = [ + { name = "nvidia-cublas-cu12" }, +] wheels = [ - { url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" }, + { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" }, ] [[package]] -name = "openai" -version = "2.8.1" +name = "nvidia-cufft-cu12" +version = "11.3.3.83" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "anyio" }, - { name = "distro" }, - { name = "httpx" }, - { name = "jiter" }, - { name = "pydantic" }, - { name = "sniffio" }, - { name = "tqdm" }, - { name = "typing-extensions" }, + { name = "nvidia-nvjitlink-cu12" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d5/e4/42591e356f1d53c568418dc7e30dcda7be31dd5a4d570bca22acb0525862/openai-2.8.1.tar.gz", hash = "sha256:cb1b79eef6e809f6da326a7ef6038719e35aa944c42d081807bfa1be8060f15f", size = 602490, upload-time = "2025-11-17T22:39:59.549Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/55/4f/dbc0c124c40cb390508a82770fb9f6e3ed162560181a85089191a851c59a/openai-2.8.1-py3-none-any.whl", hash = "sha256:c6c3b5a04994734386e8dad3c00a393f56d3b68a27cd2e8acae91a59e4122463", size = 1022688, upload-time = "2025-11-17T22:39:57.675Z" }, + { url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695, upload-time = "2025-03-07T01:45:27.821Z" }, ] [[package]] -name = "packaging" -version = "25.0" +name = "nvidia-cufile-cu12" +version = "1.13.1.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/fe/1bcba1dfbfb8d01be8d93f07bfc502c93fa23afa6fd5ab3fc7c1df71038a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc", size = 1197834, upload-time = "2025-03-07T01:45:50.723Z" }, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.9.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/aa/6584b56dc84ebe9cf93226a5cde4d99080c8e90ab40f0c27bda7a0f29aa1/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9", size = 63619976, upload-time = "2025-03-07T01:46:23.323Z" }, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.7.3.90" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12" }, + { name = "nvidia-cusparse-cu12" }, + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905, upload-time = "2025-03-07T01:47:16.273Z" }, +] + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.5.8.93" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466, upload-time = "2025-03-07T01:48:13.779Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu12" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" }, +] + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.27.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457", size = 322348229, upload-time = "2025-06-26T04:11:28.385Z" }, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.8.93" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/74/86a07f1d0f42998ca31312f998bd3b9a7eff7f52378f4f270c8679c77fb9/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88", size = 39254836, upload-time = "2025-03-07T01:49:55.661Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu12" +version = "3.3.20" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/6c/99acb2f9eb85c29fc6f3a7ac4dccfd992e22666dd08a642b303311326a97/nvidia_nvshmem_cu12-3.3.20-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d00f26d3f9b2e3c3065be895e3059d6479ea5c638a3f38c9fec49b1b9dd7c1e5", size = 124657145, upload-time = "2025-08-04T20:25:19.995Z" }, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.8.90" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/eb/86626c1bbc2edb86323022371c39aa48df6fd8b0a1647bc274577f72e90b/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f", size = 89954, upload-time = "2025-03-07T01:42:44.131Z" }, +] + +[[package]] +name = "oauthlib" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918, upload-time = "2025-06-19T22:48:08.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" }, +] + +[[package]] +name = "ocrmac" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "pillow" }, + { name = "pyobjc-framework-vision" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/07/3e15ab404f75875c5e48c47163300eb90b7409044d8711fc3aaf52503f2e/ocrmac-1.0.1.tar.gz", hash = "sha256:507fe5e4cbd67b2d03f6729a52bbc11f9d0b58241134eb958a5daafd4b9d93d9", size = 1454317, upload-time = "2026-01-08T16:44:26.412Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/15/7cc16507a2aca927abe395f1c545f17ae76b1f8ed44f43ebe4e8670ee203/ocrmac-1.0.1-py3-none-any.whl", hash = "sha256:1cef25426f7ae6bbd57fe3dc5553b25461ae8ad0d2b428a9bbadbf5907349024", size = 9955, upload-time = "2026-01-08T16:44:25.555Z" }, +] + +[[package]] +name = "omegaconf" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "antlr4-python3-runtime" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/48/6388f1bb9da707110532cb70ec4d2822858ddfb44f1cdf1233c20a80ea4b/omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7", size = 3298120, upload-time = "2022-12-08T20:59:22.753Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b", size = 79500, upload-time = "2022-12-08T20:59:19.686Z" }, +] + +[[package]] +name = "openai" +version = "2.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/f4/4690ecb5d70023ce6bfcfeabfe717020f654bde59a775058ec6ac4692463/openai-2.15.0.tar.gz", hash = "sha256:42eb8cbb407d84770633f31bf727d4ffb4138711c670565a41663d9439174fba", size = 627383, upload-time = "2026-01-09T22:10:08.603Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/df/c306f7375d42bafb379934c2df4c2fa3964656c8c782bac75ee10c102818/openai-2.15.0-py3-none-any.whl", hash = "sha256:6ae23b932cd7230f7244e52954daa6602716d6b9bf235401a107af731baea6c3", size = 1067879, upload-time = "2026-01-09T22:10:06.446Z" }, +] + +[[package]] +name = "opencv-python" +version = "4.13.0.90" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/d7/133d5756aef78090f4d8dd4895793aed24942dec6064a15375cfac9175fc/opencv_python-4.13.0.90-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:58803f8b05b51d8a785e2306d83b44173b32536f980342f3bc76d8c122b5938d", size = 46020278, upload-time = "2026-01-18T08:57:42.539Z" }, + { url = "https://files.pythonhosted.org/packages/7b/65/3b8cdbe13fa2436695d00e1d8c1ddf5edb4050a93436f34ed867233d1960/opencv_python-4.13.0.90-cp37-abi3-macosx_14_0_x86_64.whl", hash = "sha256:a5354e8b161409fce7710ba4c1cfe88b7bb460d97f705dc4e714a1636616f87d", size = 32568376, upload-time = "2026-01-18T08:58:47.19Z" }, + { url = "https://files.pythonhosted.org/packages/34/ff/e4d7c165e678563f49505d3d2811fcc16011e929cd00bc4b0070c7ee82b0/opencv_python-4.13.0.90-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d557cbf0c7818081c9acf56585b68e781af4f00638971f75eaa3de70904a6314", size = 47685110, upload-time = "2026-01-18T08:59:58.045Z" }, + { url = "https://files.pythonhosted.org/packages/cf/02/d9b73dbce28712204e85ae4c1e179505e9a771f95b33743a97e170caedde/opencv_python-4.13.0.90-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9911581e37b24169e4842069ff01d6645ea2bc4af7e10a022d9ebe340fd035ec", size = 70460479, upload-time = "2026-01-18T09:01:16.377Z" }, + { url = "https://files.pythonhosted.org/packages/fc/1c/87fa71968beb71481ed359e21772061ceff7c9b45a61b3e7daa71e5b0b66/opencv_python-4.13.0.90-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:1150b8f1947761b848bbfa9c96ceba8877743ffef157c08a04af6f7717ddd709", size = 46707819, upload-time = "2026-01-18T09:02:48.049Z" }, + { url = "https://files.pythonhosted.org/packages/af/16/915a94e5b537c328fa3e96b769c7d4eed3b67d1be978e0af658a3d3faed8/opencv_python-4.13.0.90-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:d6716f16149b04eea52f953b8ca983d60dd9cd4872c1fd5113f6e2fcebb90e93", size = 72926629, upload-time = "2026-01-18T09:04:29.23Z" }, + { url = "https://files.pythonhosted.org/packages/bf/84/9c63c84be013943dd4c5fff36157f1ec0ec894b69a2fc3026fd4e3c9280a/opencv_python-4.13.0.90-cp37-abi3-win32.whl", hash = "sha256:458a00f2ba47a877eca385be3e7bcc45e6d30a4361d107ce73c1800f516dab09", size = 30932151, upload-time = "2026-01-18T09:05:22.181Z" }, + { url = "https://files.pythonhosted.org/packages/13/de/291cbb17f44242ed6bfd3450fc2535d6bd298115c0ccd6f01cd51d4a11d7/opencv_python-4.13.0.90-cp37-abi3-win_amd64.whl", hash = "sha256:526bde4c33a86808a751e2bb57bf4921beb49794621810971926c472897f6433", size = 40211706, upload-time = "2026-01-18T09:06:06.749Z" }, +] + +[[package]] +name = "openpyxl" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "et-xmlfile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload-time = "2024-06-28T14:03:44.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" }, +] + +[[package]] +name = "opentelemetry-api" +version = "1.39.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/97/b9/3161be15bb8e3ad01be8be5a968a9237c3027c5be504362ff800fca3e442/opentelemetry_api-1.39.1.tar.gz", hash = "sha256:fbde8c80e1b937a2c61f20347e91c0c18a1940cecf012d62e65a7caf08967c9c", size = 65767, upload-time = "2025-12-11T13:32:39.182Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl", hash = "sha256:2edd8463432a7f8443edce90972169b195e7d6a05500cd29e6d13898187c9950", size = 66356, upload-time = "2025-12-11T13:32:17.304Z" }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-common" +version = "1.39.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-proto" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/9d/22d241b66f7bbde88a3bfa6847a351d2c46b84de23e71222c6aae25c7050/opentelemetry_exporter_otlp_proto_common-1.39.1.tar.gz", hash = "sha256:763370d4737a59741c89a67b50f9e39271639ee4afc999dadfe768541c027464", size = 20409, upload-time = "2025-12-11T13:32:40.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/02/ffc3e143d89a27ac21fd557365b98bd0653b98de8a101151d5805b5d4c33/opentelemetry_exporter_otlp_proto_common-1.39.1-py3-none-any.whl", hash = "sha256:08f8a5862d64cc3435105686d0216c1365dc5701f86844a8cd56597d0c764fde", size = 18366, upload-time = "2025-12-11T13:32:20.2Z" }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-http" +version = "1.39.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "googleapis-common-protos" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-common" }, + { name = "opentelemetry-proto" }, + { name = "opentelemetry-sdk" }, + { name = "requests" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/04/2a08fa9c0214ae38880df01e8bfae12b067ec0793446578575e5080d6545/opentelemetry_exporter_otlp_proto_http-1.39.1.tar.gz", hash = "sha256:31bdab9745c709ce90a49a0624c2bd445d31a28ba34275951a6a362d16a0b9cb", size = 17288, upload-time = "2025-12-11T13:32:42.029Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/f1/b27d3e2e003cd9a3592c43d099d2ed8d0a947c15281bf8463a256db0b46c/opentelemetry_exporter_otlp_proto_http-1.39.1-py3-none-any.whl", hash = "sha256:d9f5207183dd752a412c4cd564ca8875ececba13be6e9c6c370ffb752fd59985", size = 19641, upload-time = "2025-12-11T13:32:22.248Z" }, +] + +[[package]] +name = "opentelemetry-proto" +version = "1.39.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/1d/f25d76d8260c156c40c97c9ed4511ec0f9ce353f8108ca6e7561f82a06b2/opentelemetry_proto-1.39.1.tar.gz", hash = "sha256:6c8e05144fc0d3ed4d22c2289c6b126e03bcd0e6a7da0f16cedd2e1c2772e2c8", size = 46152, upload-time = "2025-12-11T13:32:48.681Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/95/b40c96a7b5203005a0b03d8ce8cd212ff23f1793d5ba289c87a097571b18/opentelemetry_proto-1.39.1-py3-none-any.whl", hash = "sha256:22cdc78efd3b3765d09e68bfbd010d4fc254c9818afd0b6b423387d9dee46007", size = 72535, upload-time = "2025-12-11T13:32:33.866Z" }, +] + +[[package]] +name = "opentelemetry-sdk" +version = "1.39.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/fb/c76080c9ba07e1e8235d24cdcc4d125ef7aa3edf23eb4e497c2e50889adc/opentelemetry_sdk-1.39.1.tar.gz", hash = "sha256:cf4d4563caf7bff906c9f7967e2be22d0d6b349b908be0d90fb21c8e9c995cc6", size = 171460, upload-time = "2025-12-11T13:32:49.369Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/98/e91cf858f203d86f4eccdf763dcf01cf03f1dae80c3750f7e635bfa206b6/opentelemetry_sdk-1.39.1-py3-none-any.whl", hash = "sha256:4d5482c478513ecb0a5d938dcc61394e647066e0cc2676bee9f3af3f3f45f01c", size = 132565, upload-time = "2025-12-11T13:32:35.069Z" }, +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.60b1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/df/553f93ed38bf22f4b999d9be9c185adb558982214f33eae539d3b5cd0858/opentelemetry_semantic_conventions-0.60b1.tar.gz", hash = "sha256:87c228b5a0669b748c76d76df6c364c369c28f1c465e50f661e39737e84bc953", size = 137935, upload-time = "2025-12-11T13:32:50.487Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl", hash = "sha256:9fa8c8b0c110da289809292b0591220d3a7b53c1526a23021e977d68597893fb", size = 219982, upload-time = "2025-12-11T13:32:36.955Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, ] +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload-time = "2025-09-29T23:16:53.287Z" }, + { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload-time = "2025-09-29T23:17:04.522Z" }, + { url = "https://files.pythonhosted.org/packages/1d/03/3fc4a529a7710f890a239cc496fc6d50ad4a0995657dccc1d64695adb9f4/pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", size = 12148791, upload-time = "2025-09-29T23:17:18.444Z" }, + { url = "https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", size = 12769373, upload-time = "2025-09-29T23:17:35.846Z" }, + { url = "https://files.pythonhosted.org/packages/df/91/82cc5169b6b25440a7fc0ef3a694582418d875c8e3ebf796a6d6470aa578/pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", size = 13200444, upload-time = "2025-09-29T23:17:49.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/ae/89b3283800ab58f7af2952704078555fa60c807fff764395bb57ea0b0dbd/pandas-2.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4", size = 13858459, upload-time = "2025-09-29T23:18:03.722Z" }, + { url = "https://files.pythonhosted.org/packages/85/72/530900610650f54a35a19476eca5104f38555afccda1aa11a92ee14cb21d/pandas-2.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826", size = 11346086, upload-time = "2025-09-29T23:18:18.505Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, + { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload-time = "2025-09-29T23:38:56.071Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e4/de154cbfeee13383ad58d23017da99390b91d73f8c11856f2095e813201b/pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", size = 12199267, upload-time = "2025-09-29T23:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c9/63f8d545568d9ab91476b1818b4741f521646cbdd151c6efebf40d6de6f7/pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", size = 12789281, upload-time = "2025-09-29T23:18:56.834Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/a5ac8c7a0e67fd1a6059e40aa08fa1c52cc00709077d2300e210c3ce0322/pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", size = 13240453, upload-time = "2025-09-29T23:19:09.247Z" }, + { url = "https://files.pythonhosted.org/packages/27/4d/5c23a5bc7bd209231618dd9e606ce076272c9bc4f12023a70e03a86b4067/pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", size = 13890361, upload-time = "2025-09-29T23:19:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/8e/59/712db1d7040520de7a4965df15b774348980e6df45c129b8c64d0dbe74ef/pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", size = 11348702, upload-time = "2025-09-29T23:19:38.296Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, + { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload-time = "2025-09-29T23:21:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload-time = "2025-09-29T23:21:55.77Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload-time = "2025-09-29T23:22:10.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload-time = "2025-09-29T23:25:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload-time = "2025-09-29T23:22:24.343Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload-time = "2025-09-29T23:22:37.762Z" }, + { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload-time = "2025-09-29T23:22:51.688Z" }, + { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload-time = "2025-09-29T23:23:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload-time = "2025-09-29T23:23:28.57Z" }, + { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload-time = "2025-09-29T23:24:24.876Z" }, + { url = "https://files.pythonhosted.org/packages/04/fd/74903979833db8390b73b3a8a7d30d146d710bd32703724dd9083950386f/pandas-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0", size = 11540635, upload-time = "2025-09-29T23:25:52.486Z" }, + { url = "https://files.pythonhosted.org/packages/21/00/266d6b357ad5e6d3ad55093a7e8efc7dd245f5a842b584db9f30b0f0a287/pandas-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593", size = 10759079, upload-time = "2025-09-29T23:26:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/ca/05/d01ef80a7a3a12b2f8bbf16daba1e17c98a2f039cbc8e2f77a2c5a63d382/pandas-2.3.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c", size = 11814049, upload-time = "2025-09-29T23:27:15.384Z" }, + { url = "https://files.pythonhosted.org/packages/15/b2/0e62f78c0c5ba7e3d2c5945a82456f4fac76c480940f805e0b97fcbc2f65/pandas-2.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b", size = 12332638, upload-time = "2025-09-29T23:27:51.625Z" }, + { url = "https://files.pythonhosted.org/packages/c5/33/dd70400631b62b9b29c3c93d2feee1d0964dc2bae2e5ad7a6c73a7f25325/pandas-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6", size = 12886834, upload-time = "2025-09-29T23:28:21.289Z" }, + { url = "https://files.pythonhosted.org/packages/d3/18/b5d48f55821228d0d2692b34fd5034bb185e854bdb592e9c640f6290e012/pandas-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3", size = 13409925, upload-time = "2025-09-29T23:28:58.261Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3d/124ac75fcd0ecc09b8fdccb0246ef65e35b012030defb0e0eba2cbbbe948/pandas-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5", size = 11109071, upload-time = "2025-09-29T23:32:27.484Z" }, + { url = "https://files.pythonhosted.org/packages/89/9c/0e21c895c38a157e0faa1fb64587a9226d6dd46452cac4532d80c3c4a244/pandas-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec", size = 12048504, upload-time = "2025-09-29T23:29:31.47Z" }, + { url = "https://files.pythonhosted.org/packages/d7/82/b69a1c95df796858777b68fbe6a81d37443a33319761d7c652ce77797475/pandas-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7", size = 11410702, upload-time = "2025-09-29T23:29:54.591Z" }, + { url = "https://files.pythonhosted.org/packages/f9/88/702bde3ba0a94b8c73a0181e05144b10f13f29ebfc2150c3a79062a8195d/pandas-2.3.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450", size = 11634535, upload-time = "2025-09-29T23:30:21.003Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1e/1bac1a839d12e6a82ec6cb40cda2edde64a2013a66963293696bbf31fbbb/pandas-2.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5", size = 12121582, upload-time = "2025-09-29T23:30:43.391Z" }, + { url = "https://files.pythonhosted.org/packages/44/91/483de934193e12a3b1d6ae7c8645d083ff88dec75f46e827562f1e4b4da6/pandas-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788", size = 12699963, upload-time = "2025-09-29T23:31:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/70/44/5191d2e4026f86a2a109053e194d3ba7a31a2d10a9c2348368c63ed4e85a/pandas-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87", size = 13202175, upload-time = "2025-09-29T23:31:59.173Z" }, +] + [[package]] name = "pathspec" -version = "0.12.1" +version = "1.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/b2/bb8e495d5262bfec41ab5cb18f522f1012933347fb5d9e62452d446baca2/pathspec-1.0.3.tar.gz", hash = "sha256:bac5cf97ae2c2876e2d25ebb15078eb04d76e4b98921ee31c6f85ade8b59444d", size = 130841, upload-time = "2026-01-09T15:46:46.009Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, + { url = "https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl", hash = "sha256:e80767021c1cc524aa3fb14bedda9c34406591343cc42797b386ce7b9354fb6c", size = 55021, upload-time = "2026-01-09T15:46:44.652Z" }, ] [[package]] name = "pillow" -version = "12.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/cace85a1b0c9775a9f8f5d5423c8261c858760e2466c79b2dd184638b056/pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353", size = 47008828, upload-time = "2025-10-15T18:24:14.008Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/08/26e68b6b5da219c2a2cb7b563af008b53bb8e6b6fcb3fa40715fcdb2523a/pillow-12.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:3adfb466bbc544b926d50fe8f4a4e6abd8c6bffd28a26177594e6e9b2b76572b", size = 5289809, upload-time = "2025-10-15T18:21:27.791Z" }, - { url = "https://files.pythonhosted.org/packages/cb/e9/4e58fb097fb74c7b4758a680aacd558810a417d1edaa7000142976ef9d2f/pillow-12.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1ac11e8ea4f611c3c0147424eae514028b5e9077dd99ab91e1bd7bc33ff145e1", size = 4650606, upload-time = "2025-10-15T18:21:29.823Z" }, - { url = "https://files.pythonhosted.org/packages/4b/e0/1fa492aa9f77b3bc6d471c468e62bfea1823056bf7e5e4f1914d7ab2565e/pillow-12.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d49e2314c373f4c2b39446fb1a45ed333c850e09d0c59ac79b72eb3b95397363", size = 6221023, upload-time = "2025-10-15T18:21:31.415Z" }, - { url = "https://files.pythonhosted.org/packages/c1/09/4de7cd03e33734ccd0c876f0251401f1314e819cbfd89a0fcb6e77927cc6/pillow-12.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c7b2a63fd6d5246349f3d3f37b14430d73ee7e8173154461785e43036ffa96ca", size = 8024937, upload-time = "2025-10-15T18:21:33.453Z" }, - { url = "https://files.pythonhosted.org/packages/2e/69/0688e7c1390666592876d9d474f5e135abb4acb39dcb583c4dc5490f1aff/pillow-12.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d64317d2587c70324b79861babb9c09f71fbb780bad212018874b2c013d8600e", size = 6334139, upload-time = "2025-10-15T18:21:35.395Z" }, - { url = "https://files.pythonhosted.org/packages/ed/1c/880921e98f525b9b44ce747ad1ea8f73fd7e992bafe3ca5e5644bf433dea/pillow-12.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d77153e14b709fd8b8af6f66a3afbb9ed6e9fc5ccf0b6b7e1ced7b036a228782", size = 7026074, upload-time = "2025-10-15T18:21:37.219Z" }, - { url = "https://files.pythonhosted.org/packages/28/03/96f718331b19b355610ef4ebdbbde3557c726513030665071fd025745671/pillow-12.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:32ed80ea8a90ee3e6fa08c21e2e091bba6eda8eccc83dbc34c95169507a91f10", size = 6448852, upload-time = "2025-10-15T18:21:39.168Z" }, - { url = "https://files.pythonhosted.org/packages/3a/a0/6a193b3f0cc9437b122978d2c5cbce59510ccf9a5b48825096ed7472da2f/pillow-12.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c828a1ae702fc712978bda0320ba1b9893d99be0badf2647f693cc01cf0f04fa", size = 7117058, upload-time = "2025-10-15T18:21:40.997Z" }, - { url = "https://files.pythonhosted.org/packages/a7/c4/043192375eaa4463254e8e61f0e2ec9a846b983929a8d0a7122e0a6d6fff/pillow-12.0.0-cp310-cp310-win32.whl", hash = "sha256:bd87e140e45399c818fac4247880b9ce719e4783d767e030a883a970be632275", size = 6295431, upload-time = "2025-10-15T18:21:42.518Z" }, - { url = "https://files.pythonhosted.org/packages/92/c6/c2f2fc7e56301c21827e689bb8b0b465f1b52878b57471a070678c0c33cd/pillow-12.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:455247ac8a4cfb7b9bc45b7e432d10421aea9fc2e74d285ba4072688a74c2e9d", size = 7000412, upload-time = "2025-10-15T18:21:44.404Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d2/5f675067ba82da7a1c238a73b32e3fd78d67f9d9f80fbadd33a40b9c0481/pillow-12.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6ace95230bfb7cd79ef66caa064bbe2f2a1e63d93471c3a2e1f1348d9f22d6b7", size = 2435903, upload-time = "2025-10-15T18:21:46.29Z" }, - { url = "https://files.pythonhosted.org/packages/0e/5a/a2f6773b64edb921a756eb0729068acad9fc5208a53f4a349396e9436721/pillow-12.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0fd00cac9c03256c8b2ff58f162ebcd2587ad3e1f2e397eab718c47e24d231cc", size = 5289798, upload-time = "2025-10-15T18:21:47.763Z" }, - { url = "https://files.pythonhosted.org/packages/2e/05/069b1f8a2e4b5a37493da6c5868531c3f77b85e716ad7a590ef87d58730d/pillow-12.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3475b96f5908b3b16c47533daaa87380c491357d197564e0ba34ae75c0f3257", size = 4650589, upload-time = "2025-10-15T18:21:49.515Z" }, - { url = "https://files.pythonhosted.org/packages/61/e3/2c820d6e9a36432503ead175ae294f96861b07600a7156154a086ba7111a/pillow-12.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:110486b79f2d112cf6add83b28b627e369219388f64ef2f960fef9ebaf54c642", size = 6230472, upload-time = "2025-10-15T18:21:51.052Z" }, - { url = "https://files.pythonhosted.org/packages/4f/89/63427f51c64209c5e23d4d52071c8d0f21024d3a8a487737caaf614a5795/pillow-12.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5269cc1caeedb67e6f7269a42014f381f45e2e7cd42d834ede3c703a1d915fe3", size = 8033887, upload-time = "2025-10-15T18:21:52.604Z" }, - { url = "https://files.pythonhosted.org/packages/f6/1b/c9711318d4901093c15840f268ad649459cd81984c9ec9887756cca049a5/pillow-12.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa5129de4e174daccbc59d0a3b6d20eaf24417d59851c07ebb37aeb02947987c", size = 6343964, upload-time = "2025-10-15T18:21:54.619Z" }, - { url = "https://files.pythonhosted.org/packages/41/1e/db9470f2d030b4995083044cd8738cdd1bf773106819f6d8ba12597d5352/pillow-12.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bee2a6db3a7242ea309aa7ee8e2780726fed67ff4e5b40169f2c940e7eb09227", size = 7034756, upload-time = "2025-10-15T18:21:56.151Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b0/6177a8bdd5ee4ed87cba2de5a3cc1db55ffbbec6176784ce5bb75aa96798/pillow-12.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:90387104ee8400a7b4598253b4c406f8958f59fcf983a6cea2b50d59f7d63d0b", size = 6458075, upload-time = "2025-10-15T18:21:57.759Z" }, - { url = "https://files.pythonhosted.org/packages/bc/5e/61537aa6fa977922c6a03253a0e727e6e4a72381a80d63ad8eec350684f2/pillow-12.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc91a56697869546d1b8f0a3ff35224557ae7f881050e99f615e0119bf934b4e", size = 7125955, upload-time = "2025-10-15T18:21:59.372Z" }, - { url = "https://files.pythonhosted.org/packages/1f/3d/d5033539344ee3cbd9a4d69e12e63ca3a44a739eb2d4c8da350a3d38edd7/pillow-12.0.0-cp311-cp311-win32.whl", hash = "sha256:27f95b12453d165099c84f8a8bfdfd46b9e4bda9e0e4b65f0635430027f55739", size = 6298440, upload-time = "2025-10-15T18:22:00.982Z" }, - { url = "https://files.pythonhosted.org/packages/4d/42/aaca386de5cc8bd8a0254516957c1f265e3521c91515b16e286c662854c4/pillow-12.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:b583dc9070312190192631373c6c8ed277254aa6e6084b74bdd0a6d3b221608e", size = 6999256, upload-time = "2025-10-15T18:22:02.617Z" }, - { url = "https://files.pythonhosted.org/packages/ba/f1/9197c9c2d5708b785f631a6dfbfa8eb3fb9672837cb92ae9af812c13b4ed/pillow-12.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:759de84a33be3b178a64c8ba28ad5c135900359e85fb662bc6e403ad4407791d", size = 2436025, upload-time = "2025-10-15T18:22:04.598Z" }, - { url = "https://files.pythonhosted.org/packages/2c/90/4fcce2c22caf044e660a198d740e7fbc14395619e3cb1abad12192c0826c/pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371", size = 5249377, upload-time = "2025-10-15T18:22:05.993Z" }, - { url = "https://files.pythonhosted.org/packages/fd/e0/ed960067543d080691d47d6938ebccbf3976a931c9567ab2fbfab983a5dd/pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082", size = 4650343, upload-time = "2025-10-15T18:22:07.718Z" }, - { url = "https://files.pythonhosted.org/packages/e7/a1/f81fdeddcb99c044bf7d6faa47e12850f13cee0849537a7d27eeab5534d4/pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f", size = 6232981, upload-time = "2025-10-15T18:22:09.287Z" }, - { url = "https://files.pythonhosted.org/packages/88/e1/9098d3ce341a8750b55b0e00c03f1630d6178f38ac191c81c97a3b047b44/pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d", size = 8041399, upload-time = "2025-10-15T18:22:10.872Z" }, - { url = "https://files.pythonhosted.org/packages/a7/62/a22e8d3b602ae8cc01446d0c57a54e982737f44b6f2e1e019a925143771d/pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953", size = 6347740, upload-time = "2025-10-15T18:22:12.769Z" }, - { url = "https://files.pythonhosted.org/packages/4f/87/424511bdcd02c8d7acf9f65caa09f291a519b16bd83c3fb3374b3d4ae951/pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8", size = 7040201, upload-time = "2025-10-15T18:22:14.813Z" }, - { url = "https://files.pythonhosted.org/packages/dc/4d/435c8ac688c54d11755aedfdd9f29c9eeddf68d150fe42d1d3dbd2365149/pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79", size = 6462334, upload-time = "2025-10-15T18:22:16.375Z" }, - { url = "https://files.pythonhosted.org/packages/2b/f2/ad34167a8059a59b8ad10bc5c72d4d9b35acc6b7c0877af8ac885b5f2044/pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba", size = 7134162, upload-time = "2025-10-15T18:22:17.996Z" }, - { url = "https://files.pythonhosted.org/packages/0c/b1/a7391df6adacf0a5c2cf6ac1cf1fcc1369e7d439d28f637a847f8803beb3/pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0", size = 6298769, upload-time = "2025-10-15T18:22:19.923Z" }, - { url = "https://files.pythonhosted.org/packages/a2/0b/d87733741526541c909bbf159e338dcace4f982daac6e5a8d6be225ca32d/pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a", size = 7001107, upload-time = "2025-10-15T18:22:21.644Z" }, - { url = "https://files.pythonhosted.org/packages/bc/96/aaa61ce33cc98421fb6088af2a03be4157b1e7e0e87087c888e2370a7f45/pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad", size = 2436012, upload-time = "2025-10-15T18:22:23.621Z" }, - { url = "https://files.pythonhosted.org/packages/62/f2/de993bb2d21b33a98d031ecf6a978e4b61da207bef02f7b43093774c480d/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643", size = 4045493, upload-time = "2025-10-15T18:22:25.758Z" }, - { url = "https://files.pythonhosted.org/packages/0e/b6/bc8d0c4c9f6f111a783d045310945deb769b806d7574764234ffd50bc5ea/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4", size = 4120461, upload-time = "2025-10-15T18:22:27.286Z" }, - { url = "https://files.pythonhosted.org/packages/5d/57/d60d343709366a353dc56adb4ee1e7d8a2cc34e3fbc22905f4167cfec119/pillow-12.0.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399", size = 3576912, upload-time = "2025-10-15T18:22:28.751Z" }, - { url = "https://files.pythonhosted.org/packages/a4/a4/a0a31467e3f83b94d37568294b01d22b43ae3c5d85f2811769b9c66389dd/pillow-12.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c50f36a62a22d350c96e49ad02d0da41dbd17ddc2e29750dbdba4323f85eb4a5", size = 5249132, upload-time = "2025-10-15T18:22:30.641Z" }, - { url = "https://files.pythonhosted.org/packages/83/06/48eab21dd561de2914242711434c0c0eb992ed08ff3f6107a5f44527f5e9/pillow-12.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5193fde9a5f23c331ea26d0cf171fbf67e3f247585f50c08b3e205c7aeb4589b", size = 4650099, upload-time = "2025-10-15T18:22:32.73Z" }, - { url = "https://files.pythonhosted.org/packages/fc/bd/69ed99fd46a8dba7c1887156d3572fe4484e3f031405fcc5a92e31c04035/pillow-12.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bde737cff1a975b70652b62d626f7785e0480918dece11e8fef3c0cf057351c3", size = 6230808, upload-time = "2025-10-15T18:22:34.337Z" }, - { url = "https://files.pythonhosted.org/packages/ea/94/8fad659bcdbf86ed70099cb60ae40be6acca434bbc8c4c0d4ef356d7e0de/pillow-12.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a6597ff2b61d121172f5844b53f21467f7082f5fb385a9a29c01414463f93b07", size = 8037804, upload-time = "2025-10-15T18:22:36.402Z" }, - { url = "https://files.pythonhosted.org/packages/20/39/c685d05c06deecfd4e2d1950e9a908aa2ca8bc4e6c3b12d93b9cafbd7837/pillow-12.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b817e7035ea7f6b942c13aa03bb554fc44fea70838ea21f8eb31c638326584e", size = 6345553, upload-time = "2025-10-15T18:22:38.066Z" }, - { url = "https://files.pythonhosted.org/packages/38/57/755dbd06530a27a5ed74f8cb0a7a44a21722ebf318edbe67ddbd7fb28f88/pillow-12.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4f1231b7dec408e8670264ce63e9c71409d9583dd21d32c163e25213ee2a344", size = 7037729, upload-time = "2025-10-15T18:22:39.769Z" }, - { url = "https://files.pythonhosted.org/packages/ca/b6/7e94f4c41d238615674d06ed677c14883103dce1c52e4af16f000338cfd7/pillow-12.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e51b71417049ad6ab14c49608b4a24d8fb3fe605e5dfabfe523b58064dc3d27", size = 6459789, upload-time = "2025-10-15T18:22:41.437Z" }, - { url = "https://files.pythonhosted.org/packages/9c/14/4448bb0b5e0f22dd865290536d20ec8a23b64e2d04280b89139f09a36bb6/pillow-12.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d120c38a42c234dc9a8c5de7ceaaf899cf33561956acb4941653f8bdc657aa79", size = 7130917, upload-time = "2025-10-15T18:22:43.152Z" }, - { url = "https://files.pythonhosted.org/packages/dd/ca/16c6926cc1c015845745d5c16c9358e24282f1e588237a4c36d2b30f182f/pillow-12.0.0-cp313-cp313-win32.whl", hash = "sha256:4cc6b3b2efff105c6a1656cfe59da4fdde2cda9af1c5e0b58529b24525d0a098", size = 6302391, upload-time = "2025-10-15T18:22:44.753Z" }, - { url = "https://files.pythonhosted.org/packages/6d/2a/dd43dcfd6dae9b6a49ee28a8eedb98c7d5ff2de94a5d834565164667b97b/pillow-12.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:4cf7fed4b4580601c4345ceb5d4cbf5a980d030fd5ad07c4d2ec589f95f09905", size = 7007477, upload-time = "2025-10-15T18:22:46.838Z" }, - { url = "https://files.pythonhosted.org/packages/77/f0/72ea067f4b5ae5ead653053212af05ce3705807906ba3f3e8f58ddf617e6/pillow-12.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:9f0b04c6b8584c2c193babcccc908b38ed29524b29dd464bc8801bf10d746a3a", size = 2435918, upload-time = "2025-10-15T18:22:48.399Z" }, - { url = "https://files.pythonhosted.org/packages/f5/5e/9046b423735c21f0487ea6cb5b10f89ea8f8dfbe32576fe052b5ba9d4e5b/pillow-12.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7fa22993bac7b77b78cae22bad1e2a987ddf0d9015c63358032f84a53f23cdc3", size = 5251406, upload-time = "2025-10-15T18:22:49.905Z" }, - { url = "https://files.pythonhosted.org/packages/12/66/982ceebcdb13c97270ef7a56c3969635b4ee7cd45227fa707c94719229c5/pillow-12.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f135c702ac42262573fe9714dfe99c944b4ba307af5eb507abef1667e2cbbced", size = 4653218, upload-time = "2025-10-15T18:22:51.587Z" }, - { url = "https://files.pythonhosted.org/packages/16/b3/81e625524688c31859450119bf12674619429cab3119eec0e30a7a1029cb/pillow-12.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c85de1136429c524e55cfa4e033b4a7940ac5c8ee4d9401cc2d1bf48154bbc7b", size = 6266564, upload-time = "2025-10-15T18:22:53.215Z" }, - { url = "https://files.pythonhosted.org/packages/98/59/dfb38f2a41240d2408096e1a76c671d0a105a4a8471b1871c6902719450c/pillow-12.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:38df9b4bfd3db902c9c2bd369bcacaf9d935b2fff73709429d95cc41554f7b3d", size = 8069260, upload-time = "2025-10-15T18:22:54.933Z" }, - { url = "https://files.pythonhosted.org/packages/dc/3d/378dbea5cd1874b94c312425ca77b0f47776c78e0df2df751b820c8c1d6c/pillow-12.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d87ef5795da03d742bf49439f9ca4d027cde49c82c5371ba52464aee266699a", size = 6379248, upload-time = "2025-10-15T18:22:56.605Z" }, - { url = "https://files.pythonhosted.org/packages/84/b0/d525ef47d71590f1621510327acec75ae58c721dc071b17d8d652ca494d8/pillow-12.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aff9e4d82d082ff9513bdd6acd4f5bd359f5b2c870907d2b0a9c5e10d40c88fe", size = 7066043, upload-time = "2025-10-15T18:22:58.53Z" }, - { url = "https://files.pythonhosted.org/packages/61/2c/aced60e9cf9d0cde341d54bf7932c9ffc33ddb4a1595798b3a5150c7ec4e/pillow-12.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8d8ca2b210ada074d57fcee40c30446c9562e542fc46aedc19baf758a93532ee", size = 6490915, upload-time = "2025-10-15T18:23:00.582Z" }, - { url = "https://files.pythonhosted.org/packages/ef/26/69dcb9b91f4e59f8f34b2332a4a0a951b44f547c4ed39d3e4dcfcff48f89/pillow-12.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:99a7f72fb6249302aa62245680754862a44179b545ded638cf1fef59befb57ef", size = 7157998, upload-time = "2025-10-15T18:23:02.627Z" }, - { url = "https://files.pythonhosted.org/packages/61/2b/726235842220ca95fa441ddf55dd2382b52ab5b8d9c0596fe6b3f23dafe8/pillow-12.0.0-cp313-cp313t-win32.whl", hash = "sha256:4078242472387600b2ce8d93ade8899c12bf33fa89e55ec89fe126e9d6d5d9e9", size = 6306201, upload-time = "2025-10-15T18:23:04.709Z" }, - { url = "https://files.pythonhosted.org/packages/c0/3d/2afaf4e840b2df71344ababf2f8edd75a705ce500e5dc1e7227808312ae1/pillow-12.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2c54c1a783d6d60595d3514f0efe9b37c8808746a66920315bfd34a938d7994b", size = 7013165, upload-time = "2025-10-15T18:23:06.46Z" }, - { url = "https://files.pythonhosted.org/packages/6f/75/3fa09aa5cf6ed04bee3fa575798ddf1ce0bace8edb47249c798077a81f7f/pillow-12.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:26d9f7d2b604cd23aba3e9faf795787456ac25634d82cd060556998e39c6fa47", size = 2437834, upload-time = "2025-10-15T18:23:08.194Z" }, - { url = "https://files.pythonhosted.org/packages/54/2a/9a8c6ba2c2c07b71bec92cf63e03370ca5e5f5c5b119b742bcc0cde3f9c5/pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:beeae3f27f62308f1ddbcfb0690bf44b10732f2ef43758f169d5e9303165d3f9", size = 4045531, upload-time = "2025-10-15T18:23:10.121Z" }, - { url = "https://files.pythonhosted.org/packages/84/54/836fdbf1bfb3d66a59f0189ff0b9f5f666cee09c6188309300df04ad71fa/pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d4827615da15cd59784ce39d3388275ec093ae3ee8d7f0c089b76fa87af756c2", size = 4120554, upload-time = "2025-10-15T18:23:12.14Z" }, - { url = "https://files.pythonhosted.org/packages/0d/cd/16aec9f0da4793e98e6b54778a5fbce4f375c6646fe662e80600b8797379/pillow-12.0.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:3e42edad50b6909089750e65c91aa09aaf1e0a71310d383f11321b27c224ed8a", size = 3576812, upload-time = "2025-10-15T18:23:13.962Z" }, - { url = "https://files.pythonhosted.org/packages/f6/b7/13957fda356dc46339298b351cae0d327704986337c3c69bb54628c88155/pillow-12.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e5d8efac84c9afcb40914ab49ba063d94f5dbdf5066db4482c66a992f47a3a3b", size = 5252689, upload-time = "2025-10-15T18:23:15.562Z" }, - { url = "https://files.pythonhosted.org/packages/fc/f5/eae31a306341d8f331f43edb2e9122c7661b975433de5e447939ae61c5da/pillow-12.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:266cd5f2b63ff316d5a1bba46268e603c9caf5606d44f38c2873c380950576ad", size = 4650186, upload-time = "2025-10-15T18:23:17.379Z" }, - { url = "https://files.pythonhosted.org/packages/86/62/2a88339aa40c4c77e79108facbd307d6091e2c0eb5b8d3cf4977cfca2fe6/pillow-12.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58eea5ebe51504057dd95c5b77d21700b77615ab0243d8152793dc00eb4faf01", size = 6230308, upload-time = "2025-10-15T18:23:18.971Z" }, - { url = "https://files.pythonhosted.org/packages/c7/33/5425a8992bcb32d1cb9fa3dd39a89e613d09a22f2c8083b7bf43c455f760/pillow-12.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f13711b1a5ba512d647a0e4ba79280d3a9a045aaf7e0cc6fbe96b91d4cdf6b0c", size = 8039222, upload-time = "2025-10-15T18:23:20.909Z" }, - { url = "https://files.pythonhosted.org/packages/d8/61/3f5d3b35c5728f37953d3eec5b5f3e77111949523bd2dd7f31a851e50690/pillow-12.0.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6846bd2d116ff42cba6b646edf5bf61d37e5cbd256425fa089fee4ff5c07a99e", size = 6346657, upload-time = "2025-10-15T18:23:23.077Z" }, - { url = "https://files.pythonhosted.org/packages/3a/be/ee90a3d79271227e0f0a33c453531efd6ed14b2e708596ba5dd9be948da3/pillow-12.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c98fa880d695de164b4135a52fd2e9cd7b7c90a9d8ac5e9e443a24a95ef9248e", size = 7038482, upload-time = "2025-10-15T18:23:25.005Z" }, - { url = "https://files.pythonhosted.org/packages/44/34/a16b6a4d1ad727de390e9bd9f19f5f669e079e5826ec0f329010ddea492f/pillow-12.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa3ed2a29a9e9d2d488b4da81dcb54720ac3104a20bf0bd273f1e4648aff5af9", size = 6461416, upload-time = "2025-10-15T18:23:27.009Z" }, - { url = "https://files.pythonhosted.org/packages/b6/39/1aa5850d2ade7d7ba9f54e4e4c17077244ff7a2d9e25998c38a29749eb3f/pillow-12.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d034140032870024e6b9892c692fe2968493790dd57208b2c37e3fb35f6df3ab", size = 7131584, upload-time = "2025-10-15T18:23:29.752Z" }, - { url = "https://files.pythonhosted.org/packages/bf/db/4fae862f8fad0167073a7733973bfa955f47e2cac3dc3e3e6257d10fab4a/pillow-12.0.0-cp314-cp314-win32.whl", hash = "sha256:1b1b133e6e16105f524a8dec491e0586d072948ce15c9b914e41cdadd209052b", size = 6400621, upload-time = "2025-10-15T18:23:32.06Z" }, - { url = "https://files.pythonhosted.org/packages/2b/24/b350c31543fb0107ab2599464d7e28e6f856027aadda995022e695313d94/pillow-12.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:8dc232e39d409036af549c86f24aed8273a40ffa459981146829a324e0848b4b", size = 7142916, upload-time = "2025-10-15T18:23:34.71Z" }, - { url = "https://files.pythonhosted.org/packages/0f/9b/0ba5a6fd9351793996ef7487c4fdbde8d3f5f75dbedc093bb598648fddf0/pillow-12.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:d52610d51e265a51518692045e372a4c363056130d922a7351429ac9f27e70b0", size = 2523836, upload-time = "2025-10-15T18:23:36.967Z" }, - { url = "https://files.pythonhosted.org/packages/f5/7a/ceee0840aebc579af529b523d530840338ecf63992395842e54edc805987/pillow-12.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1979f4566bb96c1e50a62d9831e2ea2d1211761e5662afc545fa766f996632f6", size = 5255092, upload-time = "2025-10-15T18:23:38.573Z" }, - { url = "https://files.pythonhosted.org/packages/44/76/20776057b4bfd1aef4eeca992ebde0f53a4dce874f3ae693d0ec90a4f79b/pillow-12.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b2e4b27a6e15b04832fe9bf292b94b5ca156016bbc1ea9c2c20098a0320d6cf6", size = 4653158, upload-time = "2025-10-15T18:23:40.238Z" }, - { url = "https://files.pythonhosted.org/packages/82/3f/d9ff92ace07be8836b4e7e87e6a4c7a8318d47c2f1463ffcf121fc57d9cb/pillow-12.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fb3096c30df99fd01c7bf8e544f392103d0795b9f98ba71a8054bcbf56b255f1", size = 6267882, upload-time = "2025-10-15T18:23:42.434Z" }, - { url = "https://files.pythonhosted.org/packages/9f/7a/4f7ff87f00d3ad33ba21af78bfcd2f032107710baf8280e3722ceec28cda/pillow-12.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7438839e9e053ef79f7112c881cef684013855016f928b168b81ed5835f3e75e", size = 8071001, upload-time = "2025-10-15T18:23:44.29Z" }, - { url = "https://files.pythonhosted.org/packages/75/87/fcea108944a52dad8cca0715ae6247e271eb80459364a98518f1e4f480c1/pillow-12.0.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d5c411a8eaa2299322b647cd932586b1427367fd3184ffbb8f7a219ea2041ca", size = 6380146, upload-time = "2025-10-15T18:23:46.065Z" }, - { url = "https://files.pythonhosted.org/packages/91/52/0d31b5e571ef5fd111d2978b84603fce26aba1b6092f28e941cb46570745/pillow-12.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7e091d464ac59d2c7ad8e7e08105eaf9dafbc3883fd7265ffccc2baad6ac925", size = 7067344, upload-time = "2025-10-15T18:23:47.898Z" }, - { url = "https://files.pythonhosted.org/packages/7b/f4/2dd3d721f875f928d48e83bb30a434dee75a2531bca839bb996bb0aa5a91/pillow-12.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:792a2c0be4dcc18af9d4a2dfd8a11a17d5e25274a1062b0ec1c2d79c76f3e7f8", size = 6491864, upload-time = "2025-10-15T18:23:49.607Z" }, - { url = "https://files.pythonhosted.org/packages/30/4b/667dfcf3d61fc309ba5a15b141845cece5915e39b99c1ceab0f34bf1d124/pillow-12.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:afbefa430092f71a9593a99ab6a4e7538bc9eabbf7bf94f91510d3503943edc4", size = 7158911, upload-time = "2025-10-15T18:23:51.351Z" }, - { url = "https://files.pythonhosted.org/packages/a2/2f/16cabcc6426c32218ace36bf0d55955e813f2958afddbf1d391849fee9d1/pillow-12.0.0-cp314-cp314t-win32.whl", hash = "sha256:3830c769decf88f1289680a59d4f4c46c72573446352e2befec9a8512104fa52", size = 6408045, upload-time = "2025-10-15T18:23:53.177Z" }, - { url = "https://files.pythonhosted.org/packages/35/73/e29aa0c9c666cf787628d3f0dcf379f4791fba79f4936d02f8b37165bdf8/pillow-12.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:905b0365b210c73afb0ebe9101a32572152dfd1c144c7e28968a331b9217b94a", size = 7148282, upload-time = "2025-10-15T18:23:55.316Z" }, - { url = "https://files.pythonhosted.org/packages/c1/70/6b41bdcddf541b437bbb9f47f94d2db5d9ddef6c37ccab8c9107743748a4/pillow-12.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:99353a06902c2e43b43e8ff74ee65a7d90307d82370604746738a1e0661ccca7", size = 2525630, upload-time = "2025-10-15T18:23:57.149Z" }, - { url = "https://files.pythonhosted.org/packages/1d/b3/582327e6c9f86d037b63beebe981425d6811104cb443e8193824ef1a2f27/pillow-12.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b22bd8c974942477156be55a768f7aa37c46904c175be4e158b6a86e3a6b7ca8", size = 5215068, upload-time = "2025-10-15T18:23:59.594Z" }, - { url = "https://files.pythonhosted.org/packages/fd/d6/67748211d119f3b6540baf90f92fae73ae51d5217b171b0e8b5f7e5d558f/pillow-12.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:805ebf596939e48dbb2e4922a1d3852cfc25c38160751ce02da93058b48d252a", size = 4614994, upload-time = "2025-10-15T18:24:01.669Z" }, - { url = "https://files.pythonhosted.org/packages/2d/e1/f8281e5d844c41872b273b9f2c34a4bf64ca08905668c8ae730eedc7c9fa/pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cae81479f77420d217def5f54b5b9d279804d17e982e0f2fa19b1d1e14ab5197", size = 5246639, upload-time = "2025-10-15T18:24:03.403Z" }, - { url = "https://files.pythonhosted.org/packages/94/5a/0d8ab8ffe8a102ff5df60d0de5af309015163bf710c7bb3e8311dd3b3ad0/pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aeaefa96c768fc66818730b952a862235d68825c178f1b3ffd4efd7ad2edcb7c", size = 6986839, upload-time = "2025-10-15T18:24:05.344Z" }, - { url = "https://files.pythonhosted.org/packages/20/2e/3434380e8110b76cd9eb00a363c484b050f949b4bbe84ba770bb8508a02c/pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f2d0abef9e4e2f349305a4f8cc784a8a6c2f58a8c4892eea13b10a943bd26e", size = 5313505, upload-time = "2025-10-15T18:24:07.137Z" }, - { url = "https://files.pythonhosted.org/packages/57/ca/5a9d38900d9d74785141d6580950fe705de68af735ff6e727cb911b64740/pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bdee52571a343d721fb2eb3b090a82d959ff37fc631e3f70422e0c2e029f3e76", size = 5963654, upload-time = "2025-10-15T18:24:09.579Z" }, - { url = "https://files.pythonhosted.org/packages/95/7e/f896623c3c635a90537ac093c6a618ebe1a90d87206e42309cb5d98a1b9e/pillow-12.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b290fd8aa38422444d4b50d579de197557f182ef1068b75f5aa8558638b8d0a5", size = 6997850, upload-time = "2025-10-15T18:24:11.495Z" }, +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/5d/45a3553a253ac8763f3561371432a90bdbe6000fbdcf1397ffe502aa206c/pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860", size = 5316554, upload-time = "2025-07-01T09:13:39.342Z" }, + { url = "https://files.pythonhosted.org/packages/7c/c8/67c12ab069ef586a25a4a79ced553586748fad100c77c0ce59bb4983ac98/pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad", size = 4686548, upload-time = "2025-07-01T09:13:41.835Z" }, + { url = "https://files.pythonhosted.org/packages/2f/bd/6741ebd56263390b382ae4c5de02979af7f8bd9807346d068700dd6d5cf9/pillow-11.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7107195ddc914f656c7fc8e4a5e1c25f32e9236ea3ea860f257b0436011fddd0", size = 5859742, upload-time = "2025-07-03T13:09:47.439Z" }, + { url = "https://files.pythonhosted.org/packages/ca/0b/c412a9e27e1e6a829e6ab6c2dca52dd563efbedf4c9c6aa453d9a9b77359/pillow-11.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc3e831b563b3114baac7ec2ee86819eb03caa1a2cef0b481a5675b59c4fe23b", size = 7633087, upload-time = "2025-07-03T13:09:51.796Z" }, + { url = "https://files.pythonhosted.org/packages/59/9d/9b7076aaf30f5dd17e5e5589b2d2f5a5d7e30ff67a171eb686e4eecc2adf/pillow-11.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f182ebd2303acf8c380a54f615ec883322593320a9b00438eb842c1f37ae50", size = 5963350, upload-time = "2025-07-01T09:13:43.865Z" }, + { url = "https://files.pythonhosted.org/packages/f0/16/1a6bf01fb622fb9cf5c91683823f073f053005c849b1f52ed613afcf8dae/pillow-11.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4445fa62e15936a028672fd48c4c11a66d641d2c05726c7ec1f8ba6a572036ae", size = 6631840, upload-time = "2025-07-01T09:13:46.161Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e6/6ff7077077eb47fde78739e7d570bdcd7c10495666b6afcd23ab56b19a43/pillow-11.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71f511f6b3b91dd543282477be45a033e4845a40278fa8dcdbfdb07109bf18f9", size = 6074005, upload-time = "2025-07-01T09:13:47.829Z" }, + { url = "https://files.pythonhosted.org/packages/c3/3a/b13f36832ea6d279a697231658199e0a03cd87ef12048016bdcc84131601/pillow-11.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:040a5b691b0713e1f6cbe222e0f4f74cd233421e105850ae3b3c0ceda520f42e", size = 6708372, upload-time = "2025-07-01T09:13:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/6c/e4/61b2e1a7528740efbc70b3d581f33937e38e98ef3d50b05007267a55bcb2/pillow-11.3.0-cp310-cp310-win32.whl", hash = "sha256:89bd777bc6624fe4115e9fac3352c79ed60f3bb18651420635f26e643e3dd1f6", size = 6277090, upload-time = "2025-07-01T09:13:53.915Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d3/60c781c83a785d6afbd6a326ed4d759d141de43aa7365725cbcd65ce5e54/pillow-11.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:19d2ff547c75b8e3ff46f4d9ef969a06c30ab2d4263a9e287733aa8b2429ce8f", size = 6985988, upload-time = "2025-07-01T09:13:55.699Z" }, + { url = "https://files.pythonhosted.org/packages/9f/28/4f4a0203165eefb3763939c6789ba31013a2e90adffb456610f30f613850/pillow-11.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:819931d25e57b513242859ce1876c58c59dc31587847bf74cfe06b2e0cb22d2f", size = 2422899, upload-time = "2025-07-01T09:13:57.497Z" }, + { url = "https://files.pythonhosted.org/packages/db/26/77f8ed17ca4ffd60e1dcd220a6ec6d71210ba398cfa33a13a1cd614c5613/pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722", size = 5316531, upload-time = "2025-07-01T09:13:59.203Z" }, + { url = "https://files.pythonhosted.org/packages/cb/39/ee475903197ce709322a17a866892efb560f57900d9af2e55f86db51b0a5/pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288", size = 4686560, upload-time = "2025-07-01T09:14:01.101Z" }, + { url = "https://files.pythonhosted.org/packages/d5/90/442068a160fd179938ba55ec8c97050a612426fae5ec0a764e345839f76d/pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d", size = 5870978, upload-time = "2025-07-03T13:09:55.638Z" }, + { url = "https://files.pythonhosted.org/packages/13/92/dcdd147ab02daf405387f0218dcf792dc6dd5b14d2573d40b4caeef01059/pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494", size = 7641168, upload-time = "2025-07-03T13:10:00.37Z" }, + { url = "https://files.pythonhosted.org/packages/6e/db/839d6ba7fd38b51af641aa904e2960e7a5644d60ec754c046b7d2aee00e5/pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58", size = 5973053, upload-time = "2025-07-01T09:14:04.491Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2f/d7675ecae6c43e9f12aa8d58b6012683b20b6edfbdac7abcb4e6af7a3784/pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f", size = 6640273, upload-time = "2025-07-01T09:14:06.235Z" }, + { url = "https://files.pythonhosted.org/packages/45/ad/931694675ede172e15b2ff03c8144a0ddaea1d87adb72bb07655eaffb654/pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e", size = 6082043, upload-time = "2025-07-01T09:14:07.978Z" }, + { url = "https://files.pythonhosted.org/packages/3a/04/ba8f2b11fc80d2dd462d7abec16351b45ec99cbbaea4387648a44190351a/pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94", size = 6715516, upload-time = "2025-07-01T09:14:10.233Z" }, + { url = "https://files.pythonhosted.org/packages/48/59/8cd06d7f3944cc7d892e8533c56b0acb68399f640786313275faec1e3b6f/pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0", size = 6274768, upload-time = "2025-07-01T09:14:11.921Z" }, + { url = "https://files.pythonhosted.org/packages/f1/cc/29c0f5d64ab8eae20f3232da8f8571660aa0ab4b8f1331da5c2f5f9a938e/pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac", size = 6986055, upload-time = "2025-07-01T09:14:13.623Z" }, + { url = "https://files.pythonhosted.org/packages/c6/df/90bd886fabd544c25addd63e5ca6932c86f2b701d5da6c7839387a076b4a/pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd", size = 2423079, upload-time = "2025-07-01T09:14:15.268Z" }, + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload-time = "2025-07-01T09:14:17.648Z" }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload-time = "2025-07-01T09:14:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload-time = "2025-07-03T13:10:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload-time = "2025-07-03T13:10:10.391Z" }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload-time = "2025-07-01T09:14:21.63Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload-time = "2025-07-01T09:14:23.321Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload-time = "2025-07-01T09:14:25.237Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload-time = "2025-07-01T09:14:27.053Z" }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload-time = "2025-07-01T09:14:30.104Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload-time = "2025-07-01T09:14:31.899Z" }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload-time = "2025-07-01T09:14:33.709Z" }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8b/209bd6b62ce8367f47e68a218bffac88888fdf2c9fcf1ecadc6c3ec1ebc7/pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967", size = 5270556, upload-time = "2025-07-01T09:16:09.961Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e6/231a0b76070c2cfd9e260a7a5b504fb72da0a95279410fa7afd99d9751d6/pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe", size = 4654625, upload-time = "2025-07-01T09:16:11.913Z" }, + { url = "https://files.pythonhosted.org/packages/13/f4/10cf94fda33cb12765f2397fc285fa6d8eb9c29de7f3185165b702fc7386/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e67d793d180c9df62f1f40aee3accca4829d3794c95098887edc18af4b8b780c", size = 4874207, upload-time = "2025-07-03T13:11:10.201Z" }, + { url = "https://files.pythonhosted.org/packages/72/c9/583821097dc691880c92892e8e2d41fe0a5a3d6021f4963371d2f6d57250/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d000f46e2917c705e9fb93a3606ee4a819d1e3aa7a9b442f6444f07e77cf5e25", size = 6583939, upload-time = "2025-07-03T13:11:15.68Z" }, + { url = "https://files.pythonhosted.org/packages/3b/8e/5c9d410f9217b12320efc7c413e72693f48468979a013ad17fd690397b9a/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:527b37216b6ac3a12d7838dc3bd75208ec57c1c6d11ef01902266a5a0c14fc27", size = 4957166, upload-time = "2025-07-01T09:16:13.74Z" }, + { url = "https://files.pythonhosted.org/packages/62/bb/78347dbe13219991877ffb3a91bf09da8317fbfcd4b5f9140aeae020ad71/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be5463ac478b623b9dd3937afd7fb7ab3d79dd290a28e2b6df292dc75063eb8a", size = 5581482, upload-time = "2025-07-01T09:16:16.107Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/1000353d5e61498aaeaaf7f1e4b49ddb05f2c6575f9d4f9f914a3538b6e1/pillow-11.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8dc70ca24c110503e16918a658b869019126ecfe03109b754c402daff12b3d9f", size = 6984596, upload-time = "2025-07-01T09:16:18.07Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e3/6fa84033758276fb31da12e5fb66ad747ae83b93c67af17f8c6ff4cc8f34/pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6", size = 5270566, upload-time = "2025-07-01T09:16:19.801Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ee/e8d2e1ab4892970b561e1ba96cbd59c0d28cf66737fc44abb2aec3795a4e/pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438", size = 4654618, upload-time = "2025-07-01T09:16:21.818Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6d/17f80f4e1f0761f02160fc433abd4109fa1548dcfdca46cfdadaf9efa565/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3", size = 4874248, upload-time = "2025-07-03T13:11:20.738Z" }, + { url = "https://files.pythonhosted.org/packages/de/5f/c22340acd61cef960130585bbe2120e2fd8434c214802f07e8c03596b17e/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c", size = 6583963, upload-time = "2025-07-03T13:11:26.283Z" }, + { url = "https://files.pythonhosted.org/packages/31/5e/03966aedfbfcbb4d5f8aa042452d3361f325b963ebbadddac05b122e47dd/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361", size = 4957170, upload-time = "2025-07-01T09:16:23.762Z" }, + { url = "https://files.pythonhosted.org/packages/cc/2d/e082982aacc927fc2cab48e1e731bdb1643a1406acace8bed0900a61464e/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7", size = 5581505, upload-time = "2025-07-01T09:16:25.593Z" }, + { url = "https://files.pythonhosted.org/packages/34/e7/ae39f538fd6844e982063c3a5e4598b8ced43b9633baa3a85ef33af8c05c/pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8", size = 6984598, upload-time = "2025-07-01T09:16:27.732Z" }, ] [[package]] name = "pipelex" -version = "0.17.3" -source = { registry = "https://pypi.org/simple" } +version = "0.18.0b2" +source = { editable = "../pipelex" } dependencies = [ { name = "aiofiles" }, { name = "backports-strenum", marker = "python_full_version < '3.11'" }, @@ -1788,10 +2808,15 @@ dependencies = [ { name = "kajson" }, { name = "markdown" }, { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "networkx", version = "3.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "openai" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-http" }, + { name = "opentelemetry-sdk" }, + { name = "opentelemetry-semantic-conventions" }, { name = "pillow" }, { name = "polyfactory" }, + { name = "portkey-ai" }, { name = "posthog" }, { name = "pydantic" }, { name = "pypdfium2" }, @@ -1803,11 +2828,6 @@ dependencies = [ { name = "tomlkit" }, { name = "typer" }, { name = "typing-extensions" }, - { name = "yattag" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/33/69/98c518fc203b3096bf163124d3eeae8b15f8608c28e4292b977bef99bbc1/pipelex-0.17.3.tar.gz", hash = "sha256:9be425de4faee01d1039f8e97c55a2beb66e91b005be13323709f5843b917d64", size = 368295, upload-time = "2025-12-01T13:45:52.849Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/82/1ad4436608bd1c33077d9d0905a0d93640b9c47b310f1c19ae0f96c18224/pipelex-0.17.3-py3-none-any.whl", hash = "sha256:5dda80b9adcfd13433992e2dfd96f484c6339e14511388cb66adf5e22c28cafa", size = 567412, upload-time = "2025-12-01T13:45:51.07Z" }, ] [package.optional-dependencies] @@ -1818,9 +2838,15 @@ bedrock = [ { name = "aioboto3" }, { name = "boto3" }, ] +docling = [ + { name = "docling" }, +] fal = [ { name = "fal-client" }, ] +gcp-storage = [ + { name = "google-cloud-storage" }, +] google = [ { name = "google-auth-oauthlib" }, ] @@ -1828,17 +2854,93 @@ google-genai = [ { name = "google-genai" }, { name = "instructor", extra = ["google-genai"] }, ] +huggingface = [ + { name = "huggingface-hub" }, +] mistralai = [ { name = "mistralai" }, ] +s3 = [ + { name = "aioboto3" }, + { name = "boto3" }, +] + +[package.metadata] +requires-dist = [ + { name = "aioboto3", marker = "extra == 'bedrock'", specifier = ">=13.4.0" }, + { name = "aioboto3", marker = "extra == 's3'", specifier = ">=13.4.0" }, + { name = "aiofiles", specifier = ">=23.2.1" }, + { name = "anthropic", marker = "extra == 'anthropic'", specifier = ">=0.60.0" }, + { name = "backports-strenum", marker = "python_full_version < '3.11'", specifier = ">=1.3.0" }, + { name = "boto3", marker = "extra == 'bedrock'", specifier = ">=1.34.131" }, + { name = "boto3", marker = "extra == 's3'", specifier = ">=1.34.131" }, + { name = "boto3-stubs", marker = "extra == 'dev'", specifier = ">=1.35.24" }, + { name = "docling", marker = "extra == 'docling'", specifier = ">=2.64.0" }, + { name = "fal-client", marker = "extra == 'fal'", specifier = ">=0.4.1" }, + { name = "filetype", specifier = ">=1.2.0" }, + { name = "google-auth-oauthlib", marker = "extra == 'google'", specifier = ">=1.2.1" }, + { name = "google-cloud-storage", marker = "extra == 'gcp-storage'", specifier = ">=2.10.0" }, + { name = "google-genai", marker = "extra == 'google-genai'" }, + { name = "httpx", specifier = ">=0.23.0,<1.0.0" }, + { name = "huggingface-hub", marker = "extra == 'huggingface'", specifier = ">=0.23,<1.0.0" }, + { name = "instructor", specifier = ">=1.8.3,!=1.11.*,!=1.12.*" }, + { name = "instructor", extras = ["google-genai"], marker = "extra == 'google-genai'" }, + { name = "jinja2", specifier = ">=3.1.4" }, + { name = "json2html", specifier = ">=1.3.0" }, + { name = "kajson", specifier = "==0.3.1" }, + { name = "markdown", specifier = ">=3.6" }, + { name = "mike", marker = "extra == 'docs'", specifier = ">=2.1.3" }, + { name = "mistralai", marker = "extra == 'mistralai'", specifier = "==1.5.2" }, + { name = "mkdocs", marker = "extra == 'docs'", specifier = ">=1.6.1" }, + { name = "mkdocs-glightbox", marker = "extra == 'docs'", specifier = ">=0.4.0" }, + { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.6.14" }, + { name = "mkdocs-meta-manager", marker = "extra == 'docs'", specifier = ">=1.1.0" }, + { name = "moto", extras = ["s3"], marker = "extra == 'dev'", specifier = ">=5.0.0" }, + { name = "mypy", marker = "extra == 'dev'", specifier = "==1.19.1" }, + { name = "networkx", specifier = ">=3.4.2" }, + { name = "openai", specifier = ">=1.108.1" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-http" }, + { name = "opentelemetry-sdk" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "pillow", specifier = ">=11.2.1" }, + { name = "polyfactory", specifier = ">=2.21.0" }, + { name = "portkey-ai", specifier = ">=2.1.0" }, + { name = "posthog", specifier = ">=6.7.0" }, + { name = "pydantic", specifier = ">=2.10.6,<3.0.0" }, + { name = "pylint", marker = "extra == 'dev'", specifier = "==4.0.4" }, + { name = "pypdfium2", specifier = ">=4.30.0,!=4.30.1" }, + { name = "pyright", marker = "extra == 'dev'", specifier = "==1.1.408" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=9.0.2" }, + { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.24.0" }, + { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=6.1.1" }, + { name = "pytest-mock", marker = "extra == 'dev'", specifier = ">=3.14.0" }, + { name = "pytest-sugar", marker = "extra == 'dev'", specifier = ">=1.0.0" }, + { name = "pytest-xdist", marker = "extra == 'dev'", specifier = ">=3.6.1" }, + { name = "python-dotenv", specifier = ">=1.0.1" }, + { name = "pyyaml", specifier = ">=6.0.2" }, + { name = "rich", specifier = ">=13.8.1" }, + { name = "ruff", marker = "extra == 'dev'", specifier = "==0.14.13" }, + { name = "shortuuid", specifier = ">=1.0.13" }, + { name = "tomli", specifier = ">=2.3.0" }, + { name = "tomlkit", specifier = ">=0.13.2" }, + { name = "typer", specifier = ">=0.16.0" }, + { name = "types-aioboto3", extras = ["bedrock", "bedrock-runtime"], marker = "extra == 'dev'", specifier = ">=13.4.0" }, + { name = "types-aiofiles", marker = "extra == 'dev'", specifier = ">=24.1.0.20240626" }, + { name = "types-markdown", marker = "extra == 'dev'", specifier = ">=3.6.0.20240316" }, + { name = "types-networkx", marker = "extra == 'dev'", specifier = ">=3.3.0.20241020" }, + { name = "types-pyyaml", marker = "extra == 'dev'", specifier = ">=6.0.12.20250326" }, + { name = "typing-extensions", specifier = ">=4.13.2" }, +] +provides-extras = ["anthropic", "bedrock", "docling", "fal", "gcp-storage", "google", "google-genai", "huggingface", "mistralai", "s3", "docs", "dev"] [[package]] name = "platformdirs" -version = "4.5.0" +version = "4.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/61/33/9611380c2bdb1225fdef633e2a9610622310fed35ab11dac9620972ee088/platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", size = 21632, upload-time = "2025-10-08T17:44:48.791Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", size = 21715, upload-time = "2025-12-05T13:52:58.638Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/cb/ac7874b3e5d58441674fb70742e6c374b28b0c7cb988d37d991cde47166c/platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3", size = 18651, upload-time = "2025-10-08T17:44:47.223Z" }, + { url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31", size = 18731, upload-time = "2025-12-05T13:52:56.823Z" }, ] [[package]] @@ -1852,20 +2954,41 @@ wheels = [ [[package]] name = "polyfactory" -version = "3.1.0" +version = "3.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "faker" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/3a/db522ea17e0e8d38f3128889b5b600b3a1d5728ae0724f43a0ed5ed1f82e/polyfactory-3.1.0.tar.gz", hash = "sha256:9061c0a282e0594502576455230fce534f2915042be77715256c1e6bbbf24ac5", size = 344189, upload-time = "2025-11-25T08:10:16.555Z" } +sdist = { url = "https://files.pythonhosted.org/packages/97/92/e90639b1d2abe982749eba7e734571a343ea062f7d486498b1c2b852f019/polyfactory-3.2.0.tar.gz", hash = "sha256:879242f55208f023eee1de48522de5cb1f9fd2d09b2314e999a9592829d596d1", size = 346878, upload-time = "2025-12-21T11:18:51.017Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/21/93363d7b802aa904f8d4169bc33e0e316d06d26ee68d40fe0355057da98c/polyfactory-3.2.0-py3-none-any.whl", hash = "sha256:5945799cce4c56cd44ccad96fb0352996914553cc3efaa5a286930599f569571", size = 62181, upload-time = "2025-12-21T11:18:49.311Z" }, +] + +[[package]] +name = "portkey-ai" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "cached-property" }, + { name = "distro" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "tqdm" }, + { name = "types-requests" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d4/8a/f5bbaab806ad61d9959cb7c88c639200feacac1b2ba7b455b97a2f216e7c/portkey_ai-2.1.0.tar.gz", hash = "sha256:c2558041c568eef8528737978089301cb9be056f166a683251831cbfa6a623cb", size = 567417, upload-time = "2025-11-25T20:32:43.102Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/7c/535646d75a1c510065169ea65693613c7a6bc64491bea13e7dad4f028ff3/polyfactory-3.1.0-py3-none-any.whl", hash = "sha256:78171232342c25906d542513c9f00ebf41eadec2c67b498490a577024dd7e867", size = 61836, upload-time = "2025-11-25T08:10:14.893Z" }, + { url = "https://files.pythonhosted.org/packages/b7/11/c585b90ac842027e5f4f7f7cee72d3197f58ff24b6d7c5f1243aa8fa96be/portkey_ai-2.1.0-py3-none-any.whl", hash = "sha256:2166033f8e198745947fee5321d0bbcfb005afc35468bd5a948fa83dc16b6767", size = 1181622, upload-time = "2025-11-25T20:32:41.185Z" }, ] [[package]] name = "posthog" -version = "7.0.1" +version = "7.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "backoff" }, @@ -1875,14 +2998,14 @@ dependencies = [ { name = "six" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a2/d4/b9afe855a8a7a1bf4459c28ae4c300b40338122dc850acabefcf2c3df24d/posthog-7.0.1.tar.gz", hash = "sha256:21150562c2630a599c1d7eac94bc5c64eb6f6acbf3ff52ccf1e57345706db05a", size = 126985, upload-time = "2025-11-15T12:44:22.465Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/10/dcbe5d12ba5e62b2a9c9004a80117765468198c44ffef16d2b54f938bddf/posthog-7.6.0.tar.gz", hash = "sha256:941dfd278ee427c9b14640f09b35b5bb52a71bdf028d7dbb7307e1838fd3002e", size = 146194, upload-time = "2026-01-19T16:23:04.571Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/0c/8b6b20b0be71725e6e8a32dcd460cdbf62fe6df9bc656a650150dc98fedd/posthog-7.0.1-py3-none-any.whl", hash = "sha256:efe212d8d88a9ba80a20c588eab4baf4b1a5e90e40b551160a5603bb21e96904", size = 145234, upload-time = "2025-11-15T12:44:21.247Z" }, + { url = "https://files.pythonhosted.org/packages/ae/f6/8d4a2d1b67368fec425f32911e2f3638d5ac9e8abfebc698ac426fcf65db/posthog-7.6.0-py3-none-any.whl", hash = "sha256:c4dd78cf77c4fecceb965f86066e5ac37886ef867d68ffe75a1db5d681d7d9ad", size = 168426, upload-time = "2026-01-19T16:23:02.71Z" }, ] [[package]] name = "pre-commit" -version = "4.5.0" +version = "4.5.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cfgv" }, @@ -1891,9 +3014,9 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/9b/6a4ffb4ed980519da959e1cf3122fc6cb41211daa58dbae1c73c0e519a37/pre_commit-4.5.0.tar.gz", hash = "sha256:dc5a065e932b19fc1d4c653c6939068fe54325af8e741e74e88db4d28a4dd66b", size = 198428, upload-time = "2025-11-22T21:02:42.304Z" } +sdist = { url = "https://files.pythonhosted.org/packages/40/f1/6d86a29246dfd2e9b6237f0b5823717f60cad94d47ddc26afa916d21f525/pre_commit-4.5.1.tar.gz", hash = "sha256:eb545fcff725875197837263e977ea257a402056661f09dae08e4b149b030a61", size = 198232, upload-time = "2025-12-16T21:14:33.552Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/c4/b2d28e9d2edf4f1713eb3c29307f1a63f3d67cf09bdda29715a36a68921a/pre_commit-4.5.0-py2.py3-none-any.whl", hash = "sha256:25e2ce09595174d9c97860a95609f9f852c0614ba602de3561e267547f2335e1", size = 226429, upload-time = "2025-11-22T21:02:40.836Z" }, + { url = "https://files.pythonhosted.org/packages/5d/19/fd3ef348460c80af7bb4669ea7926651d1f95c23ff2df18b9d24bab4f3fa/pre_commit-4.5.1-py2.py3-none-any.whl", hash = "sha256:3b3afd891e97337708c1674210f8eba659b52a38ea5f822ff142d10786221f77", size = 226437, upload-time = "2025-12-16T21:14:32.409Z" }, ] [[package]] @@ -2010,13 +3133,68 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload-time = "2025-10-08T19:49:00.792Z" }, ] +[[package]] +name = "proto-plus" +version = "1.27.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/89/9cbe2f4bba860e149108b683bc2efec21f14d5f7ed6e25562ad86acbc373/proto_plus-1.27.0.tar.gz", hash = "sha256:873af56dd0d7e91836aee871e5799e1c6f1bda86ac9a983e0bb9f0c266a568c4", size = 56158, upload-time = "2025-12-16T13:46:25.729Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/24/3b7a0818484df9c28172857af32c2397b6d8fcd99d9468bd4684f98ebf0a/proto_plus-1.27.0-py3-none-any.whl", hash = "sha256:1baa7f81cf0f8acb8bc1f6d085008ba4171eaf669629d1b6d1673b21ed1c0a82", size = 50205, upload-time = "2025-12-16T13:46:24.76Z" }, +] + +[[package]] +name = "protobuf" +version = "6.33.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/b8/cda15d9d46d03d4aa3a67cb6bffe05173440ccf86a9541afaf7ac59a1b6b/protobuf-6.33.4.tar.gz", hash = "sha256:dc2e61bca3b10470c1912d166fe0af67bfc20eb55971dcef8dfa48ce14f0ed91", size = 444346, upload-time = "2026-01-12T18:33:40.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/be/24ef9f3095bacdf95b458543334d0c4908ccdaee5130420bf064492c325f/protobuf-6.33.4-cp310-abi3-win32.whl", hash = "sha256:918966612c8232fc6c24c78e1cd89784307f5814ad7506c308ee3cf86662850d", size = 425612, upload-time = "2026-01-12T18:33:29.656Z" }, + { url = "https://files.pythonhosted.org/packages/31/ad/e5693e1974a28869e7cd244302911955c1cebc0161eb32dfa2b25b6e96f0/protobuf-6.33.4-cp310-abi3-win_amd64.whl", hash = "sha256:8f11ffae31ec67fc2554c2ef891dcb561dae9a2a3ed941f9e134c2db06657dbc", size = 436962, upload-time = "2026-01-12T18:33:31.345Z" }, + { url = "https://files.pythonhosted.org/packages/66/15/6ee23553b6bfd82670207ead921f4d8ef14c107e5e11443b04caeb5ab5ec/protobuf-6.33.4-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2fe67f6c014c84f655ee06f6f66213f9254b3a8b6bda6cda0ccd4232c73c06f0", size = 427612, upload-time = "2026-01-12T18:33:32.646Z" }, + { url = "https://files.pythonhosted.org/packages/2b/48/d301907ce6d0db75f959ca74f44b475a9caa8fcba102d098d3c3dd0f2d3f/protobuf-6.33.4-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:757c978f82e74d75cba88eddec479df9b99a42b31193313b75e492c06a51764e", size = 324484, upload-time = "2026-01-12T18:33:33.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/1c/e53078d3f7fe710572ab2dcffd993e1e3b438ae71cfc031b71bae44fcb2d/protobuf-6.33.4-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:c7c64f259c618f0bef7bee042075e390debbf9682334be2b67408ec7c1c09ee6", size = 339256, upload-time = "2026-01-12T18:33:35.231Z" }, + { url = "https://files.pythonhosted.org/packages/e8/8e/971c0edd084914f7ee7c23aa70ba89e8903918adca179319ee94403701d5/protobuf-6.33.4-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:3df850c2f8db9934de4cf8f9152f8dc2558f49f298f37f90c517e8e5c84c30e9", size = 323311, upload-time = "2026-01-12T18:33:36.305Z" }, + { url = "https://files.pythonhosted.org/packages/75/b1/1dc83c2c661b4c62d56cc081706ee33a4fc2835bd90f965baa2663ef7676/protobuf-6.33.4-py3-none-any.whl", hash = "sha256:1fe3730068fcf2e595816a6c34fe66eeedd37d51d0400b72fabc848811fdc1bc", size = 170532, upload-time = "2026-01-12T18:33:39.199Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/73/cb/09e5184fb5fc0358d110fc3ca7f6b1d033800734d34cac10f4136cfac10e/psutil-7.2.1.tar.gz", hash = "sha256:f7583aec590485b43ca601dd9cea0dcd65bd7bb21d30ef4ddbf4ea6b5ed1bdd3", size = 490253, upload-time = "2025-12-29T08:26:00.169Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/8e/f0c242053a368c2aa89584ecd1b054a18683f13d6e5a318fc9ec36582c94/psutil-7.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ba9f33bb525b14c3ea563b2fd521a84d2fa214ec59e3e6a2858f78d0844dd60d", size = 129624, upload-time = "2025-12-29T08:26:04.255Z" }, + { url = "https://files.pythonhosted.org/packages/26/97/a58a4968f8990617decee234258a2b4fc7cd9e35668387646c1963e69f26/psutil-7.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:81442dac7abfc2f4f4385ea9e12ddf5a796721c0f6133260687fec5c3780fa49", size = 130132, upload-time = "2025-12-29T08:26:06.228Z" }, + { url = "https://files.pythonhosted.org/packages/db/6d/ed44901e830739af5f72a85fa7ec5ff1edea7f81bfbf4875e409007149bd/psutil-7.2.1-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ea46c0d060491051d39f0d2cff4f98d5c72b288289f57a21556cc7d504db37fc", size = 180612, upload-time = "2025-12-29T08:26:08.276Z" }, + { url = "https://files.pythonhosted.org/packages/c7/65/b628f8459bca4efbfae50d4bf3feaab803de9a160b9d5f3bd9295a33f0c2/psutil-7.2.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35630d5af80d5d0d49cfc4d64c1c13838baf6717a13effb35869a5919b854cdf", size = 183201, upload-time = "2025-12-29T08:26:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/fb/23/851cadc9764edcc18f0effe7d0bf69f727d4cf2442deb4a9f78d4e4f30f2/psutil-7.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:923f8653416604e356073e6e0bccbe7c09990acef442def2f5640dd0faa9689f", size = 139081, upload-time = "2025-12-29T08:26:12.483Z" }, + { url = "https://files.pythonhosted.org/packages/59/82/d63e8494ec5758029f31c6cb06d7d161175d8281e91d011a4a441c8a43b5/psutil-7.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:cfbe6b40ca48019a51827f20d830887b3107a74a79b01ceb8cc8de4ccb17b672", size = 134767, upload-time = "2025-12-29T08:26:14.528Z" }, + { url = "https://files.pythonhosted.org/packages/05/c2/5fb764bd61e40e1fe756a44bd4c21827228394c17414ade348e28f83cd79/psutil-7.2.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:494c513ccc53225ae23eec7fe6e1482f1b8a44674241b54561f755a898650679", size = 129716, upload-time = "2025-12-29T08:26:16.017Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d2/935039c20e06f615d9ca6ca0ab756cf8408a19d298ffaa08666bc18dc805/psutil-7.2.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3fce5f92c22b00cdefd1645aa58ab4877a01679e901555067b1bd77039aa589f", size = 130133, upload-time = "2025-12-29T08:26:18.009Z" }, + { url = "https://files.pythonhosted.org/packages/77/69/19f1eb0e01d24c2b3eacbc2f78d3b5add8a89bf0bb69465bc8d563cc33de/psutil-7.2.1-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93f3f7b0bb07711b49626e7940d6fe52aa9940ad86e8f7e74842e73189712129", size = 181518, upload-time = "2025-12-29T08:26:20.241Z" }, + { url = "https://files.pythonhosted.org/packages/e1/6d/7e18b1b4fa13ad370787626c95887b027656ad4829c156bb6569d02f3262/psutil-7.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d34d2ca888208eea2b5c68186841336a7f5e0b990edec929be909353a202768a", size = 184348, upload-time = "2025-12-29T08:26:22.215Z" }, + { url = "https://files.pythonhosted.org/packages/98/60/1672114392dd879586d60dd97896325df47d9a130ac7401318005aab28ec/psutil-7.2.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2ceae842a78d1603753561132d5ad1b2f8a7979cb0c283f5b52fb4e6e14b1a79", size = 140400, upload-time = "2025-12-29T08:26:23.993Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7b/d0e9d4513c46e46897b46bcfc410d51fc65735837ea57a25170f298326e6/psutil-7.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:08a2f175e48a898c8eb8eace45ce01777f4785bc744c90aa2cc7f2fa5462a266", size = 135430, upload-time = "2025-12-29T08:26:25.999Z" }, + { url = "https://files.pythonhosted.org/packages/c5/cf/5180eb8c8bdf6a503c6919f1da28328bd1e6b3b1b5b9d5b01ae64f019616/psutil-7.2.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b2e953fcfaedcfbc952b44744f22d16575d3aa78eb4f51ae74165b4e96e55f42", size = 128137, upload-time = "2025-12-29T08:26:27.759Z" }, + { url = "https://files.pythonhosted.org/packages/c5/2c/78e4a789306a92ade5000da4f5de3255202c534acdadc3aac7b5458fadef/psutil-7.2.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:05cc68dbb8c174828624062e73078e7e35406f4ca2d0866c272c2410d8ef06d1", size = 128947, upload-time = "2025-12-29T08:26:29.548Z" }, + { url = "https://files.pythonhosted.org/packages/29/f8/40e01c350ad9a2b3cb4e6adbcc8a83b17ee50dd5792102b6142385937db5/psutil-7.2.1-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e38404ca2bb30ed7267a46c02f06ff842e92da3bb8c5bfdadbd35a5722314d8", size = 154694, upload-time = "2025-12-29T08:26:32.147Z" }, + { url = "https://files.pythonhosted.org/packages/06/e4/b751cdf839c011a9714a783f120e6a86b7494eb70044d7d81a25a5cd295f/psutil-7.2.1-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab2b98c9fc19f13f59628d94df5cc4cc4844bc572467d113a8b517d634e362c6", size = 156136, upload-time = "2025-12-29T08:26:34.079Z" }, + { url = "https://files.pythonhosted.org/packages/44/ad/bbf6595a8134ee1e94a4487af3f132cef7fce43aef4a93b49912a48c3af7/psutil-7.2.1-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f78baafb38436d5a128f837fab2d92c276dfb48af01a240b861ae02b2413ada8", size = 148108, upload-time = "2025-12-29T08:26:36.225Z" }, + { url = "https://files.pythonhosted.org/packages/1c/15/dd6fd869753ce82ff64dcbc18356093471a5a5adf4f77ed1f805d473d859/psutil-7.2.1-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:99a4cd17a5fdd1f3d014396502daa70b5ec21bf4ffe38393e152f8e449757d67", size = 147402, upload-time = "2025-12-29T08:26:39.21Z" }, + { url = "https://files.pythonhosted.org/packages/34/68/d9317542e3f2b180c4306e3f45d3c922d7e86d8ce39f941bb9e2e9d8599e/psutil-7.2.1-cp37-abi3-win_amd64.whl", hash = "sha256:b1b0671619343aa71c20ff9767eced0483e4fc9e1f489d50923738caf6a03c17", size = 136938, upload-time = "2025-12-29T08:26:41.036Z" }, + { url = "https://files.pythonhosted.org/packages/3e/73/2ce007f4198c80fcf2cb24c169884f833fe93fbc03d55d302627b094ee91/psutil-7.2.1-cp37-abi3-win_arm64.whl", hash = "sha256:0d67c1822c355aa6f7314d92018fb4268a76668a536f133599b91edd48759442", size = 133836, upload-time = "2025-12-29T08:26:43.086Z" }, +] + [[package]] name = "pyasn1" -version = "0.6.1" +version = "0.6.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/b6/6e630dff89739fcd427e3f72b3d905ce0acb85a45d4ec3e2678718a3487f/pyasn1-0.6.2.tar.gz", hash = "sha256:9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b", size = 146586, upload-time = "2026-01-16T18:04:18.534Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/44/b5/a96872e5184f354da9c84ae119971a0a4c221fe9b27a4d94bd43f2596727/pyasn1-0.6.2-py3-none-any.whl", hash = "sha256:1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf", size = 83371, upload-time = "2026-01-16T18:04:17.174Z" }, ] [[package]] @@ -2031,6 +3209,49 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, ] +[[package]] +name = "pyclipper" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/21/3c06205bb407e1f79b73b7b4dfb3950bd9537c4f625a68ab5cc41177f5bc/pyclipper-1.4.0.tar.gz", hash = "sha256:9882bd889f27da78add4dd6f881d25697efc740bf840274e749988d25496c8e1", size = 54489, upload-time = "2025-12-01T13:15:35.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/9f/a10173d32ecc2ce19a04d018163f3ca22a04c0c6ad03b464dcd32f9152a8/pyclipper-1.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bafad70d2679c187120e8c44e1f9a8b06150bad8c0aecf612ad7dfbfa9510f73", size = 264510, upload-time = "2025-12-01T13:14:46.551Z" }, + { url = "https://files.pythonhosted.org/packages/e0/c2/5490ddc4a1f7ceeaa0258f4266397e720c02db515b2ca5bc69b85676f697/pyclipper-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0b74a9dd44b22a7fd35d65fb1ceeba57f3817f34a97a28c3255556362e491447", size = 139498, upload-time = "2025-12-01T13:14:48.31Z" }, + { url = "https://files.pythonhosted.org/packages/3b/0a/bea9102d1d75634b1a5702b0e92982451a1eafca73c4845d3dbe27eba13d/pyclipper-1.4.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a4d2736fb3c42e8eb1d38bf27a720d1015526c11e476bded55138a977c17d9d", size = 970974, upload-time = "2025-12-01T13:14:49.799Z" }, + { url = "https://files.pythonhosted.org/packages/8b/1b/097f8776d5b3a10eb7b443b632221f4ed825d892e79e05682f4b10a1a59c/pyclipper-1.4.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b3b3630051b53ad2564cb079e088b112dd576e3d91038338ad1cc7915e0f14dc", size = 943315, upload-time = "2025-12-01T13:14:51.266Z" }, + { url = "https://files.pythonhosted.org/packages/fd/4d/17d6a3f1abf0f368d58f2309e80ee3761afb1fd1342f7780ab32ba4f0b1d/pyclipper-1.4.0-cp310-cp310-win32.whl", hash = "sha256:8d42b07a2f6cfe2d9b87daf345443583f00a14e856927782fde52f3a255e305a", size = 95286, upload-time = "2025-12-01T13:14:52.922Z" }, + { url = "https://files.pythonhosted.org/packages/53/ca/b30138427ed122ec9b47980b943164974a2ec606fa3f71597033b9a9f9a6/pyclipper-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:6a97b961f182b92d899ca88c1bb3632faea2e00ce18d07c5f789666ebb021ca4", size = 104227, upload-time = "2025-12-01T13:14:54.013Z" }, + { url = "https://files.pythonhosted.org/packages/de/e3/64cf7794319b088c288706087141e53ac259c7959728303276d18adc665d/pyclipper-1.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:adcb7ca33c5bdc33cd775e8b3eadad54873c802a6d909067a57348bcb96e7a2d", size = 264281, upload-time = "2025-12-01T13:14:55.47Z" }, + { url = "https://files.pythonhosted.org/packages/34/cd/44ec0da0306fa4231e76f1c2cb1fa394d7bde8db490a2b24d55b39865f69/pyclipper-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd24849d2b94ec749ceac7c34c9f01010d23b6e9d9216cf2238b8481160e703d", size = 139426, upload-time = "2025-12-01T13:14:56.683Z" }, + { url = "https://files.pythonhosted.org/packages/ad/88/d8f6c6763ea622fe35e19c75d8b39ed6c55191ddc82d65e06bc46b26cb8e/pyclipper-1.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1b6c8d75ba20c6433c9ea8f1a0feb7e4d3ac06a09ad1fd6d571afc1ddf89b869", size = 989649, upload-time = "2025-12-01T13:14:58.28Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e9/ea7d68c8c4af3842d6515bedcf06418610ad75f111e64c92c1d4785a1513/pyclipper-1.4.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:58e29d7443d7cc0e83ee9daf43927730386629786d00c63b04fe3b53ac01462c", size = 962842, upload-time = "2025-12-01T13:15:00.044Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b7/0b4a272d8726e51ab05e2b933d8cc47f29757fb8212e38b619e170e6015c/pyclipper-1.4.0-cp311-cp311-win32.whl", hash = "sha256:a8d2b5fb75ebe57e21ce61e79a9131edec2622ff23cc665e4d1d1f201bc1a801", size = 95098, upload-time = "2025-12-01T13:15:01.359Z" }, + { url = "https://files.pythonhosted.org/packages/3a/76/4901de2919198bb2bd3d989f86d4a1dff363962425bb2d63e24e6c990042/pyclipper-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:e9b973467d9c5fa9bc30bb6ac95f9f4d7c3d9fc25f6cf2d1cc972088e5955c01", size = 104362, upload-time = "2025-12-01T13:15:02.439Z" }, + { url = "https://files.pythonhosted.org/packages/90/1b/7a07b68e0842324d46c03e512d8eefa9cb92ba2a792b3b4ebf939dafcac3/pyclipper-1.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:222ac96c8b8281b53d695b9c4fedc674f56d6d4320ad23f1bdbd168f4e316140", size = 265676, upload-time = "2025-12-01T13:15:04.15Z" }, + { url = "https://files.pythonhosted.org/packages/6b/dd/8bd622521c05d04963420ae6664093f154343ed044c53ea260a310c8bb4d/pyclipper-1.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f3672dbafbb458f1b96e1ee3e610d174acb5ace5bd2ed5d1252603bb797f2fc6", size = 140458, upload-time = "2025-12-01T13:15:05.76Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/6e3e241882bf7d6ab23d9c69ba4e85f1ec47397cbbeee948a16cf75e21ed/pyclipper-1.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d1f807e2b4760a8e5c6d6b4e8c1d71ef52b7fe1946ff088f4fa41e16a881a5ca", size = 978235, upload-time = "2025-12-01T13:15:06.993Z" }, + { url = "https://files.pythonhosted.org/packages/cf/f4/3418c1cd5eea640a9fa2501d4bc0b3655fa8d40145d1a4f484b987990a75/pyclipper-1.4.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce1f83c9a4e10ea3de1959f0ae79e9a5bd41346dff648fee6228ba9eaf8b3872", size = 961388, upload-time = "2025-12-01T13:15:08.467Z" }, + { url = "https://files.pythonhosted.org/packages/ac/94/c85401d24be634af529c962dd5d781f3cb62a67cd769534df2cb3feee97a/pyclipper-1.4.0-cp312-cp312-win32.whl", hash = "sha256:3ef44b64666ebf1cb521a08a60c3e639d21b8c50bfbe846ba7c52a0415e936f4", size = 95169, upload-time = "2025-12-01T13:15:10.098Z" }, + { url = "https://files.pythonhosted.org/packages/97/77/dfea08e3b230b82ee22543c30c35d33d42f846a77f96caf7c504dd54fab1/pyclipper-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:d1e5498d883b706a4ce636247f0d830c6eb34a25b843a1b78e2c969754ca9037", size = 104619, upload-time = "2025-12-01T13:15:11.592Z" }, + { url = "https://files.pythonhosted.org/packages/67/d0/cbce7d47de1e6458f66a4d999b091640134deb8f2c7351eab993b70d2e10/pyclipper-1.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d49df13cbb2627ccb13a1046f3ea6ebf7177b5504ec61bdef87d6a704046fd6e", size = 264342, upload-time = "2025-12-01T13:15:12.697Z" }, + { url = "https://files.pythonhosted.org/packages/ce/cc/742b9d69d96c58ac156947e1b56d0f81cbacbccf869e2ac7229f2f86dc4e/pyclipper-1.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:37bfec361e174110cdddffd5ecd070a8064015c99383d95eb692c253951eee8a", size = 139839, upload-time = "2025-12-01T13:15:13.911Z" }, + { url = "https://files.pythonhosted.org/packages/db/48/dd301d62c1529efdd721b47b9e5fb52120fcdac5f4d3405cfc0d2f391414/pyclipper-1.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:14c8bdb5a72004b721c4e6f448d2c2262d74a7f0c9e3076aeff41e564a92389f", size = 972142, upload-time = "2025-12-01T13:15:15.477Z" }, + { url = "https://files.pythonhosted.org/packages/07/bf/d493fd1b33bb090fa64e28c1009374d5d72fa705f9331cd56517c35e381e/pyclipper-1.4.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f2a50c22c3a78cb4e48347ecf06930f61ce98cf9252f2e292aa025471e9d75b1", size = 952789, upload-time = "2025-12-01T13:15:17.042Z" }, + { url = "https://files.pythonhosted.org/packages/cf/88/b95ea8ea21ddca34aa14b123226a81526dd2faaa993f9aabd3ed21231604/pyclipper-1.4.0-cp313-cp313-win32.whl", hash = "sha256:c9a3faa416ff536cee93417a72bfb690d9dea136dc39a39dbbe1e5dadf108c9c", size = 94817, upload-time = "2025-12-01T13:15:18.724Z" }, + { url = "https://files.pythonhosted.org/packages/ba/42/0a1920d276a0e1ca21dc0d13ee9e3ba10a9a8aa3abac76cd5e5a9f503306/pyclipper-1.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:d4b2d7c41086f1927d14947c563dfc7beed2f6c0d9af13c42fe3dcdc20d35832", size = 104007, upload-time = "2025-12-01T13:15:19.763Z" }, + { url = "https://files.pythonhosted.org/packages/1a/20/04d58c70f3ccd404f179f8dd81d16722a05a3bf1ab61445ee64e8218c1f8/pyclipper-1.4.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:7c87480fc91a5af4c1ba310bdb7de2f089a3eeef5fe351a3cedc37da1fcced1c", size = 265167, upload-time = "2025-12-01T13:15:20.844Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2e/a570c1abe69b7260ca0caab4236ce6ea3661193ebf8d1bd7f78ccce537a5/pyclipper-1.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:81d8bb2d1fb9d66dc7ea4373b176bb4b02443a7e328b3b603a73faec088b952e", size = 139966, upload-time = "2025-12-01T13:15:22.036Z" }, + { url = "https://files.pythonhosted.org/packages/e8/3b/e0859e54adabdde8a24a29d3f525ebb31c71ddf2e8d93edce83a3c212ffc/pyclipper-1.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:773c0e06b683214dcfc6711be230c83b03cddebe8a57eae053d4603dd63582f9", size = 968216, upload-time = "2025-12-01T13:15:23.18Z" }, + { url = "https://files.pythonhosted.org/packages/f6/6b/e3c4febf0a35ae643ee579b09988dd931602b5bf311020535fd9e5b7e715/pyclipper-1.4.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9bc45f2463d997848450dbed91c950ca37c6cf27f84a49a5cad4affc0b469e39", size = 954198, upload-time = "2025-12-01T13:15:24.522Z" }, + { url = "https://files.pythonhosted.org/packages/fc/74/728efcee02e12acb486ce9d56fa037120c9bf5b77c54bbdbaa441c14a9d9/pyclipper-1.4.0-cp314-cp314-win32.whl", hash = "sha256:0b8c2105b3b3c44dbe1a266f64309407fe30bf372cf39a94dc8aaa97df00da5b", size = 96951, upload-time = "2025-12-01T13:15:25.79Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d7/7f4354e69f10a917e5c7d5d72a499ef2e10945312f5e72c414a0a08d2ae4/pyclipper-1.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:6c317e182590c88ec0194149995e3d71a979cfef3b246383f4e035f9d4a11826", size = 106782, upload-time = "2025-12-01T13:15:26.945Z" }, + { url = "https://files.pythonhosted.org/packages/63/60/fc32c7a3d7f61a970511ec2857ecd09693d8ac80d560ee7b8e67a6d268c9/pyclipper-1.4.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:f160a2c6ba036f7eaf09f1f10f4fbfa734234af9112fb5187877efed78df9303", size = 269880, upload-time = "2025-12-01T13:15:28.117Z" }, + { url = "https://files.pythonhosted.org/packages/49/df/c4a72d3f62f0ba03ec440c4fff56cd2d674a4334d23c5064cbf41c9583f6/pyclipper-1.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:a9f11ad133257c52c40d50de7a0ca3370a0cdd8e3d11eec0604ad3c34ba549e9", size = 141706, upload-time = "2025-12-01T13:15:30.134Z" }, + { url = "https://files.pythonhosted.org/packages/c5/0b/cf55df03e2175e1e2da9db585241401e0bc98f76bee3791bed39d0313449/pyclipper-1.4.0-cp314-cp314t-win32.whl", hash = "sha256:bbc827b77442c99deaeee26e0e7f172355ddb097a5e126aea206d447d3b26286", size = 105308, upload-time = "2025-12-01T13:15:31.225Z" }, + { url = "https://files.pythonhosted.org/packages/8f/dc/53df8b6931d47080b4fe4ee8450d42e660ee1c5c1556c7ab73359182b769/pyclipper-1.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:29dae3e0296dff8502eeb7639fcfee794b0eec8590ba3563aee28db269da6b04", size = 117608, upload-time = "2025-12-01T13:15:32.69Z" }, + { url = "https://files.pythonhosted.org/packages/18/59/81050abdc9e5b90ffc2c765738c5e40e9abd8e44864aaa737b600f16c562/pyclipper-1.4.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98b2a40f98e1fc1b29e8a6094072e7e0c7dfe901e573bf6cfc6eb7ce84a7ae87", size = 126495, upload-time = "2025-12-01T13:15:33.743Z" }, +] + [[package]] name = "pydantic" version = "2.12.5" @@ -2164,6 +3385,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/36/c7/cfc8e811f061c841d7990b0201912c3556bfeb99cdcb7ed24adc8d6f8704/pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51", size = 2145302, upload-time = "2025-11-04T13:43:46.64Z" }, ] +[[package]] +name = "pydantic-settings" +version = "2.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/4b/ac7e0aae12027748076d72a8764ff1c9d82ca75a7a52622e67ed3f765c54/pydantic_settings-2.12.0.tar.gz", hash = "sha256:005538ef951e3c2a68e1c08b292b5f2e71490def8589d4221b95dab00dafcfd0", size = 194184, upload-time = "2025-11-10T14:25:47.013Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl", hash = "sha256:fddb9fd99a5b18da837b29710391e945b1e30c135477f484084ee513adb93809", size = 51880, upload-time = "2025-11-10T14:25:45.546Z" }, +] + [[package]] name = "pygments" version = "2.19.2" @@ -2174,41 +3409,148 @@ wheels = [ ] [[package]] -name = "pypdfium2" -version = "5.1.0" +name = "pylatexenc" +version = "2.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5d/ab/34ec41718af73c00119d0351b7a2531d2ebddb51833a36448fc7b862be60/pylatexenc-2.10.tar.gz", hash = "sha256:3dd8fd84eb46dc30bee1e23eaab8d8fb5a7f507347b23e5f38ad9675c84f40d3", size = 162597, upload-time = "2021-04-06T07:56:07.854Z" } + +[[package]] +name = "pyobjc-core" +version = "12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b8/b6/d5612eb40be4fd5ef88c259339e6313f46ba67577a95d86c3470b951fce0/pyobjc_core-12.1.tar.gz", hash = "sha256:2bb3903f5387f72422145e1466b3ac3f7f0ef2e9960afa9bcd8961c5cbf8bd21", size = 1000532, upload-time = "2025-11-14T10:08:28.292Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/bf/3dbb1783388da54e650f8a6b88bde03c101d9ba93dfe8ab1b1873f1cd999/pyobjc_core-12.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:93418e79c1655f66b4352168f8c85c942707cb1d3ea13a1da3e6f6a143bacda7", size = 676748, upload-time = "2025-11-14T09:30:50.023Z" }, + { url = "https://files.pythonhosted.org/packages/95/df/d2b290708e9da86d6e7a9a2a2022b91915cf2e712a5a82e306cb6ee99792/pyobjc_core-12.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c918ebca280925e7fcb14c5c43ce12dcb9574a33cccb889be7c8c17f3bcce8b6", size = 671263, upload-time = "2025-11-14T09:31:35.231Z" }, + { url = "https://files.pythonhosted.org/packages/64/5a/6b15e499de73050f4a2c88fff664ae154307d25dc04da8fb38998a428358/pyobjc_core-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:818bcc6723561f207e5b5453efe9703f34bc8781d11ce9b8be286bb415eb4962", size = 678335, upload-time = "2025-11-14T09:32:20.107Z" }, + { url = "https://files.pythonhosted.org/packages/f4/d2/29e5e536adc07bc3d33dd09f3f7cf844bf7b4981820dc2a91dd810f3c782/pyobjc_core-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:01c0cf500596f03e21c23aef9b5f326b9fb1f8f118cf0d8b66749b6cf4cbb37a", size = 677370, upload-time = "2025-11-14T09:33:05.273Z" }, + { url = "https://files.pythonhosted.org/packages/1b/f0/4b4ed8924cd04e425f2a07269943018d43949afad1c348c3ed4d9d032787/pyobjc_core-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:177aaca84bb369a483e4961186704f64b2697708046745f8167e818d968c88fc", size = 719586, upload-time = "2025-11-14T09:33:53.302Z" }, + { url = "https://files.pythonhosted.org/packages/25/98/9f4ed07162de69603144ff480be35cd021808faa7f730d082b92f7ebf2b5/pyobjc_core-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:844515f5d86395b979d02152576e7dee9cc679acc0b32dc626ef5bda315eaa43", size = 670164, upload-time = "2025-11-14T09:34:37.458Z" }, + { url = "https://files.pythonhosted.org/packages/62/50/dc076965c96c7f0de25c0a32b7f8aa98133ed244deaeeacfc758783f1f30/pyobjc_core-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:453b191df1a4b80e756445b935491b974714456ae2cbae816840bd96f86db882", size = 712204, upload-time = "2025-11-14T09:35:24.148Z" }, +] + +[[package]] +name = "pyobjc-framework-cocoa" +version = "12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyobjc-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/a3/16ca9a15e77c061a9250afbae2eae26f2e1579eb8ca9462ae2d2c71e1169/pyobjc_framework_cocoa-12.1.tar.gz", hash = "sha256:5556c87db95711b985d5efdaaf01c917ddd41d148b1e52a0c66b1a2e2c5c1640", size = 2772191, upload-time = "2025-11-14T10:13:02.069Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/aa/2b2d7ec3ac4b112a605e9bd5c5e5e4fd31d60a8a4b610ab19cc4838aa92a/pyobjc_framework_cocoa-12.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9b880d3bdcd102809d704b6d8e14e31611443aa892d9f60e8491e457182fdd48", size = 383825, upload-time = "2025-11-14T09:40:28.354Z" }, + { url = "https://files.pythonhosted.org/packages/3f/07/5760735c0fffc65107e648eaf7e0991f46da442ac4493501be5380e6d9d4/pyobjc_framework_cocoa-12.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f52228bcf38da64b77328787967d464e28b981492b33a7675585141e1b0a01e6", size = 383812, upload-time = "2025-11-14T09:40:53.169Z" }, + { url = "https://files.pythonhosted.org/packages/95/bf/ee4f27ec3920d5c6fc63c63e797c5b2cc4e20fe439217085d01ea5b63856/pyobjc_framework_cocoa-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:547c182837214b7ec4796dac5aee3aa25abc665757b75d7f44f83c994bcb0858", size = 384590, upload-time = "2025-11-14T09:41:17.336Z" }, + { url = "https://files.pythonhosted.org/packages/ad/31/0c2e734165abb46215797bd830c4bdcb780b699854b15f2b6240515edcc6/pyobjc_framework_cocoa-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5a3dcd491cacc2f5a197142b3c556d8aafa3963011110102a093349017705118", size = 384689, upload-time = "2025-11-14T09:41:41.478Z" }, + { url = "https://files.pythonhosted.org/packages/23/3b/b9f61be7b9f9b4e0a6db18b3c35c4c4d589f2d04e963e2174d38c6555a92/pyobjc_framework_cocoa-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:914b74328c22d8ca261d78c23ef2befc29776e0b85555973927b338c5734ca44", size = 388843, upload-time = "2025-11-14T09:42:05.719Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/f777cc9e775fc7dae77b569254570fe46eb842516b3e4fe383ab49eab598/pyobjc_framework_cocoa-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:03342a60fc0015bcdf9b93ac0b4f457d3938e9ef761b28df9564c91a14f0129a", size = 384932, upload-time = "2025-11-14T09:42:29.771Z" }, + { url = "https://files.pythonhosted.org/packages/58/27/b457b7b37089cad692c8aada90119162dfb4c4a16f513b79a8b2b022b33b/pyobjc_framework_cocoa-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6ba1dc1bfa4da42d04e93d2363491275fb2e2be5c20790e561c8a9e09b8cf2cc", size = 388970, upload-time = "2025-11-14T09:42:53.964Z" }, +] + +[[package]] +name = "pyobjc-framework-coreml" +version = "12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyobjc-core" }, + { name = "pyobjc-framework-cocoa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/2d/baa9ea02cbb1c200683cb7273b69b4bee5070e86f2060b77e6a27c2a9d7e/pyobjc_framework_coreml-12.1.tar.gz", hash = "sha256:0d1a4216891a18775c9e0170d908714c18e4f53f9dc79fb0f5263b2aa81609ba", size = 40465, upload-time = "2025-11-14T10:14:02.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/f6/e8afa7143d541f6f0b9ac4b3820098a1b872bceba9210ae1bf4b5b4d445d/pyobjc_framework_coreml-12.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df4e9b4f97063148cc481f72e2fbe3cc53b9464d722752aa658d7c0aec9f02fd", size = 11334, upload-time = "2025-11-14T09:45:48.42Z" }, + { url = "https://files.pythonhosted.org/packages/34/0f/f55369da4a33cfe1db38a3512aac4487602783d3a1d572d2c8c4ccce6abc/pyobjc_framework_coreml-12.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:16dafcfb123f022e62f47a590a7eccf7d0cb5957a77fd5f062b5ee751cb5a423", size = 11331, upload-time = "2025-11-14T09:45:50.445Z" }, + { url = "https://files.pythonhosted.org/packages/bb/39/4defef0deb25c5d7e3b7826d301e71ac5b54ef901b7dac4db1adc00f172d/pyobjc_framework_coreml-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:10dc8e8db53d7631ebc712cad146e3a9a9a443f4e1a037e844149a24c3c42669", size = 11356, upload-time = "2025-11-14T09:45:52.271Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3f/3749964aa3583f8c30d9996f0d15541120b78d307bb3070f5e47154ef38d/pyobjc_framework_coreml-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:48fa3bb4a03fa23e0e36c93936dca2969598e4102f4b441e1663f535fc99cd31", size = 11371, upload-time = "2025-11-14T09:45:54.105Z" }, + { url = "https://files.pythonhosted.org/packages/9c/c8/cf20ea91ae33f05f3b92dec648c6f44a65f86d1a64c1d6375c95b85ccb7c/pyobjc_framework_coreml-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:71de5b37e6a017e3ed16645c5d6533138f24708da5b56c35c818ae49d0253ee1", size = 11600, upload-time = "2025-11-14T09:45:55.976Z" }, + { url = "https://files.pythonhosted.org/packages/bc/5c/510ae8e3663238d32e653ed6a09ac65611dd045a7241f12633c1ab48bb9b/pyobjc_framework_coreml-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a04a96e512ecf6999aa9e1f60ad5635cb9d1cd839be470341d8d1541797baef6", size = 11418, upload-time = "2025-11-14T09:45:57.75Z" }, + { url = "https://files.pythonhosted.org/packages/d3/1a/b7367819381b07c440fa5797d2b0487e31f09aa72079a693ceab6875fa0a/pyobjc_framework_coreml-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:7762b3dd2de01565b7cf3049ce1e4c27341ba179d97016b0b7607448e1c39865", size = 11593, upload-time = "2025-11-14T09:45:59.623Z" }, +] + +[[package]] +name = "pyobjc-framework-quartz" +version = "12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1c/87/56782107fa242137b77ccddc30519bbb33e7a9eed9da9649d9db45db2c64/pypdfium2-5.1.0.tar.gz", hash = "sha256:46335ca30a1584b804a6824da84d2e846b4b954bdfc342d035b7bf15ed9a14e5", size = 270104, upload-time = "2025-11-23T13:36:52.589Z" } +dependencies = [ + { name = "pyobjc-core" }, + { name = "pyobjc-framework-cocoa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/18/cc59f3d4355c9456fc945eae7fe8797003c4da99212dd531ad1b0de8a0c6/pyobjc_framework_quartz-12.1.tar.gz", hash = "sha256:27f782f3513ac88ec9b6c82d9767eef95a5cf4175ce88a1e5a65875fee799608", size = 3159099, upload-time = "2025-11-14T10:21:24.31Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/d7/46ce255322cd29f0db3772667a0da3db8ed137e1e9b9aa306ac5691765b3/pypdfium2-5.1.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f3dde94d320d582d3c20255b600f1e7e03261bfdea139b7064b54126fc3db4e2", size = 2817789, upload-time = "2025-11-23T13:36:31.423Z" }, - { url = "https://files.pythonhosted.org/packages/19/a5/4ad3c1b336fdc2b7a88d835c56bcd64ce60d4a95d1a9eaafc44f853da582/pypdfium2-5.1.0-py3-none-macosx_11_0_x86_64.whl", hash = "sha256:dee09b7a3ab1860a17decc97c179a5aaba5a74b2780d53c91daa18d742945892", size = 2940861, upload-time = "2025-11-23T13:36:33.519Z" }, - { url = "https://files.pythonhosted.org/packages/19/93/d13ca66d5e075d7e27736c51c15955cdd3266ac0a8327613c3c520d43693/pypdfium2-5.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1757d6470cbf5b8d1c825350df2ccd79fd0bfcf5753ff566fd02153a486014b1", size = 2980933, upload-time = "2025-11-23T13:36:35.283Z" }, - { url = "https://files.pythonhosted.org/packages/a2/7c/02744ef9e0363af08f9ed47c0e603ef8713e02d4a48492c76d5bf36f65c3/pypdfium2-5.1.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ad18e95497423f88b33f2976cb78c27f0bd6ef4b4bf340c901f5f28a234c4f06", size = 2762960, upload-time = "2025-11-23T13:36:37.033Z" }, - { url = "https://files.pythonhosted.org/packages/89/26/f0abcfccb99b0a5c4451b70b0e72ccb7c27387931af01eae982870272202/pypdfium2-5.1.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2faee2f4fbd5bd33dd77c07d15ccaa6687562d883a54c4beb8329ebaee615b7d", size = 3060522, upload-time = "2025-11-23T13:36:38.835Z" }, - { url = "https://files.pythonhosted.org/packages/2f/74/92f508e71178aa85de32454762f84d6f9cef35c468caab3e0f1041dae464/pypdfium2-5.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d688372df169a9dad606c1e5ad34b6e0e6b820f1e0d540b4780711600a7bf8dd", size = 2995178, upload-time = "2025-11-23T13:36:40.319Z" }, - { url = "https://files.pythonhosted.org/packages/94/9f/91ca099ea64b24e19ef05da72e33d0ef0840e104d89cbdcb618da12629b5/pypdfium2-5.1.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:cfecd2b20f1c05027aaa2af6bfbcc2835b4c8f6455155b0dc2800ec6a2051965", size = 6321704, upload-time = "2025-11-23T13:36:42.177Z" }, - { url = "https://files.pythonhosted.org/packages/e0/4b/5628cfda9f534b3acc1e2cf50f9e9582cd9cfd86cf2ce718da229de6e709/pypdfium2-5.1.0-py3-none-musllinux_1_1_i686.whl", hash = "sha256:5698de8e6d662f1b2cdff5cb62e6f0ee79ffaaa13e282251854cbc64cf712449", size = 6329892, upload-time = "2025-11-23T13:36:43.757Z" }, - { url = "https://files.pythonhosted.org/packages/c5/25/5d2db765f8f82129d75ea2883ed26af3d1a64d8daaa20a11005ac681e2c3/pypdfium2-5.1.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:2cbd73093fbb1710ea1164cdf27583363e1b663b8cc22d555c84af0ee1af50c7", size = 6409889, upload-time = "2025-11-23T13:36:45.387Z" }, - { url = "https://files.pythonhosted.org/packages/89/d3/135ed8ca46044cd5005cd104ead13bea417777afa65d7af5a710eb68d340/pypdfium2-5.1.0-py3-none-win32.whl", hash = "sha256:11d319cd2e5f71cdc3d68e8a79142b559a0edbcc16fe31d4036fcfc45f0e9ed8", size = 2991546, upload-time = "2025-11-23T13:36:47.373Z" }, - { url = "https://files.pythonhosted.org/packages/52/8f/884a1b2fd7c747a98e9b4c95097c08b39d042a88837ac72f2945a7f6162c/pypdfium2-5.1.0-py3-none-win_amd64.whl", hash = "sha256:4725f347a8c9ff011a7035d8267ee25912ab1b946034ba0b57f3cca89de8847a", size = 3100176, upload-time = "2025-11-23T13:36:49.234Z" }, - { url = "https://files.pythonhosted.org/packages/d7/5c/72448636ea0ccd44878f77bb5d59a2c967a54eec806ee2e0d894ef0d2434/pypdfium2-5.1.0-py3-none-win_arm64.whl", hash = "sha256:47c5593f7eb6ae0f1e5a940d712d733ede580f09ca91de6c3f89611848695c0f", size = 2941500, upload-time = "2025-11-23T13:36:50.69Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/50c42c84796886e4d360407fb629000bb68d843b2502c88318375441676f/pyobjc_framework_quartz-12.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c6f312ae79ef8b3019dcf4b3374c52035c7c7bc4a09a1748b61b041bb685a0ed", size = 217799, upload-time = "2025-11-14T09:59:32.62Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ef/dcd22b743e38b3c430fce4788176c2c5afa8bfb01085b8143b02d1e75201/pyobjc_framework_quartz-12.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:19f99ac49a0b15dd892e155644fe80242d741411a9ed9c119b18b7466048625a", size = 217795, upload-time = "2025-11-14T09:59:46.922Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9b/780f057e5962f690f23fdff1083a4cfda5a96d5b4d3bb49505cac4f624f2/pyobjc_framework_quartz-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7730cdce46c7e985535b5a42c31381af4aa6556e5642dc55b5e6597595e57a16", size = 218798, upload-time = "2025-11-14T10:00:01.236Z" }, + { url = "https://files.pythonhosted.org/packages/ba/2d/e8f495328101898c16c32ac10e7b14b08ff2c443a756a76fd1271915f097/pyobjc_framework_quartz-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:629b7971b1b43a11617f1460cd218bd308dfea247cd4ee3842eb40ca6f588860", size = 219206, upload-time = "2025-11-14T10:00:15.623Z" }, + { url = "https://files.pythonhosted.org/packages/67/43/b1f0ad3b842ab150a7e6b7d97f6257eab6af241b4c7d14cb8e7fde9214b8/pyobjc_framework_quartz-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:53b84e880c358ba1ddcd7e8d5ea0407d760eca58b96f0d344829162cda5f37b3", size = 224317, upload-time = "2025-11-14T10:00:30.703Z" }, + { url = "https://files.pythonhosted.org/packages/4a/00/96249c5c7e5aaca5f688ca18b8d8ad05cd7886ebd639b3c71a6a4cadbe75/pyobjc_framework_quartz-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:42d306b07f05ae7d155984503e0fb1b701fecd31dcc5c79fe8ab9790ff7e0de0", size = 219558, upload-time = "2025-11-14T10:00:45.476Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a6/708a55f3ff7a18c403b30a29a11dccfed0410485a7548c60a4b6d4cc0676/pyobjc_framework_quartz-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0cc08fddb339b2760df60dea1057453557588908e42bdc62184b6396ce2d6e9a", size = 224580, upload-time = "2025-11-14T10:01:00.091Z" }, +] + +[[package]] +name = "pyobjc-framework-vision" +version = "12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyobjc-core" }, + { name = "pyobjc-framework-cocoa" }, + { name = "pyobjc-framework-coreml" }, + { name = "pyobjc-framework-quartz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c2/5a/08bb3e278f870443d226c141af14205ff41c0274da1e053b72b11dfc9fb2/pyobjc_framework_vision-12.1.tar.gz", hash = "sha256:a30959100e85dcede3a786c544e621ad6eb65ff6abf85721f805822b8c5fe9b0", size = 59538, upload-time = "2025-11-14T10:23:21.979Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/48/b23e639a66e5d3d944710bb2eaeb7257c18b0834dffc7ea2ddadadf8620e/pyobjc_framework_vision-12.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a30c3fff926348baecc3ce1f6da8ed327d0cbd55ca1c376d018e31023b79c0ab", size = 21432, upload-time = "2025-11-14T10:06:39.709Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/e30cf4eef2b4c7e20ccadc1249117c77305fbc38b2e5904eb42e3753f63c/pyobjc_framework_vision-12.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1edbf2fc18ce3b31108f845901a88f2236783ae6bf0bc68438d7ece572dc2a29", size = 21432, upload-time = "2025-11-14T10:06:42.373Z" }, + { url = "https://files.pythonhosted.org/packages/3a/5a/23502935b3fc877d7573e743fc3e6c28748f33a45c43851d503bde52cde7/pyobjc_framework_vision-12.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6b3211d84f3a12aad0cde752cfd43a80d0218960ac9e6b46b141c730e7d655bd", size = 16625, upload-time = "2025-11-14T10:06:44.422Z" }, + { url = "https://files.pythonhosted.org/packages/f5/e4/e87361a31b82b22f8c0a59652d6e17625870dd002e8da75cb2343a84f2f9/pyobjc_framework_vision-12.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7273e2508db4c2e88523b4b7ff38ac54808756e7ba01d78e6c08ea68f32577d2", size = 16640, upload-time = "2025-11-14T10:06:46.653Z" }, + { url = "https://files.pythonhosted.org/packages/b1/dd/def55d8a80b0817f486f2712fc6243482c3264d373dc5ff75037b3aeb7ea/pyobjc_framework_vision-12.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:04296f0848cc8cdead66c76df6063720885cbdf24fdfd1900749a6e2297313db", size = 16782, upload-time = "2025-11-14T10:06:48.816Z" }, + { url = "https://files.pythonhosted.org/packages/a7/a4/ee1ef14d6e1df6617e64dbaaa0ecf8ecb9e0af1425613fa633f6a94049c1/pyobjc_framework_vision-12.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:631add775ed1dafb221a6116137cdcd78432addc16200ca434571c2a039c0e03", size = 16614, upload-time = "2025-11-14T10:06:50.852Z" }, + { url = "https://files.pythonhosted.org/packages/af/53/187743d9244becd4499a77f8ee699ae286e2f6ade7c0c7ad2975ae60f187/pyobjc_framework_vision-12.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:fe41a1a70cc91068aee7b5293fa09dc66d1c666a8da79fdf948900988b439df6", size = 16771, upload-time = "2025-11-14T10:06:53.04Z" }, +] + +[[package]] +name = "pypdfium2" +version = "5.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/83/173dab58beb6c7e772b838199014c173a2436018dd7cfde9bbf4a3be15da/pypdfium2-5.3.0.tar.gz", hash = "sha256:2873ffc95fcb01f329257ebc64a5fdce44b36447b6b171fe62f7db5dc3269885", size = 268742, upload-time = "2026-01-05T16:29:03.02Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/a4/6bb5b5918c7fc236ec426be8a0205a984fe0a26ae23d5e4dd497398a6571/pypdfium2-5.3.0-py3-none-android_23_arm64_v8a.whl", hash = "sha256:885df6c78d41600cb086dc0c76b912d165b5bd6931ca08138329ea5a991b3540", size = 2763287, upload-time = "2026-01-05T16:28:24.21Z" }, + { url = "https://files.pythonhosted.org/packages/3e/64/24b41b906006bf07099b095f0420ee1f01a3a83a899f3e3731e4da99c06a/pypdfium2-5.3.0-py3-none-android_23_armeabi_v7a.whl", hash = "sha256:6e53dee6b333ee77582499eff800300fb5aa0c7eb8f52f95ccb5ca35ebc86d48", size = 2303285, upload-time = "2026-01-05T16:28:26.274Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c0/3ec73f4ded83ba6c02acf6e9d228501759d5d74fe57f1b93849ab92dcc20/pypdfium2-5.3.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ce4466bdd62119fe25a5f74d107acc9db8652062bf217057630c6ff0bb419523", size = 2816066, upload-time = "2026-01-05T16:28:28.099Z" }, + { url = "https://files.pythonhosted.org/packages/62/ca/e553b3b8b5c2cdc3d955cc313493ac27bbe63fc22624769d56ded585dd5e/pypdfium2-5.3.0-py3-none-macosx_11_0_x86_64.whl", hash = "sha256:cc2647fd03db42b8a56a8835e8bc7899e604e2042cd6fedeea53483185612907", size = 2945545, upload-time = "2026-01-05T16:28:29.489Z" }, + { url = "https://files.pythonhosted.org/packages/a1/56/615b776071e95c8570d579038256d0c77969ff2ff381e427be4ab8967f44/pypdfium2-5.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35e205f537ddb4069e4b4e22af7ffe84fcf2d686c3fee5e5349f73268a0ef1ca", size = 2979892, upload-time = "2026-01-05T16:28:31.088Z" }, + { url = "https://files.pythonhosted.org/packages/df/10/27114199b765bdb7d19a9514c07036ad2fc3a579b910e7823ba167ead6de/pypdfium2-5.3.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5795298f44050797ac030994fc2525ea35d2d714efe70058e0ee22e5f613f27", size = 2765738, upload-time = "2026-01-05T16:28:33.18Z" }, + { url = "https://files.pythonhosted.org/packages/b4/d7/2a3afa35e6c205a4f6264c33b8d2f659707989f93c30b336aa58575f66fa/pypdfium2-5.3.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7cd43dfceb77137e69e74c933d41506da1dddaff70f3a794fb0ad0d73e90d75", size = 3064338, upload-time = "2026-01-05T16:28:34.731Z" }, + { url = "https://files.pythonhosted.org/packages/a2/f1/6658755cf6e369bb51d0bccb81c51c300404fbe67c2f894c90000b6442dd/pypdfium2-5.3.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5956867558fd3a793e58691cf169718864610becb765bfe74dd83f05cbf1ae3", size = 3415059, upload-time = "2026-01-05T16:28:37.313Z" }, + { url = "https://files.pythonhosted.org/packages/f5/34/f86482134fa641deb1f524c45ec7ebd6fc8d404df40c5657ddfce528593e/pypdfium2-5.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ff1071e9a782625822658dfe6e29e3a644a66960f8713bb17819f5a0ac5987", size = 2998517, upload-time = "2026-01-05T16:28:38.873Z" }, + { url = "https://files.pythonhosted.org/packages/09/34/40ab99425dcf503c172885904c5dc356c052bfdbd085f9f3cc920e0b8b25/pypdfium2-5.3.0-py3-none-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f319c46ead49d289ab8c1ed2ea63c91e684f35bdc4cf4dc52191c441182ac481", size = 3673154, upload-time = "2026-01-05T16:28:40.347Z" }, + { url = "https://files.pythonhosted.org/packages/a5/67/0f7532f80825a7728a5cbff3f1104857f8f9fe49ebfd6cb25582a89ae8e1/pypdfium2-5.3.0-py3-none-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6dc67a186da0962294321cace6ccc0a4d212dbc5e9522c640d35725a812324b8", size = 2965002, upload-time = "2026-01-05T16:28:42.143Z" }, + { url = "https://files.pythonhosted.org/packages/ce/6c/c03d2a3d6621b77aac9604bce1c060de2af94950448787298501eac6c6a2/pypdfium2-5.3.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0ad0afd3d2b5b54d86287266fd6ae3fef0e0a1a3df9d2c4984b3e3f8f70e6330", size = 4130530, upload-time = "2026-01-05T16:28:44.264Z" }, + { url = "https://files.pythonhosted.org/packages/af/39/9ad1f958cbe35d4693ae87c09ebafda4bb3e4709c7ccaec86c1a829163a3/pypdfium2-5.3.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1afe35230dc3951b3e79b934c0c35a2e79e2372d06503fce6cf1926d2a816f47", size = 3746568, upload-time = "2026-01-05T16:28:45.897Z" }, + { url = "https://files.pythonhosted.org/packages/2a/e2/4d32310166c2d6955d924737df8b0a3e3efc8d133344a98b10f96320157d/pypdfium2-5.3.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:00385793030cadce08469085cd21b168fd8ff981b009685fef3103bdc5fc4686", size = 4336683, upload-time = "2026-01-05T16:28:47.584Z" }, + { url = "https://files.pythonhosted.org/packages/14/ea/38c337ff12a8cec4b00fd4fdb0a63a70597a344581e20b02addbd301ab56/pypdfium2-5.3.0-py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:d911e82676398949697fef80b7f412078df14d725a91c10e383b727051530285", size = 4375030, upload-time = "2026-01-05T16:28:49.5Z" }, + { url = "https://files.pythonhosted.org/packages/a1/77/9d8de90c35d2fc383be8819bcde52f5821dacbd7404a0225e4010b99d080/pypdfium2-5.3.0-py3-none-musllinux_1_2_riscv64.whl", hash = "sha256:ca1dc625ed347fac3d9002a3ed33d521d5803409bd572e7b3f823c12ab2ef58f", size = 3928914, upload-time = "2026-01-05T16:28:51.433Z" }, + { url = "https://files.pythonhosted.org/packages/a5/39/9d4a6fbd78fcb6803b0ea5e4952a31d6182a0aaa2609cfcd0eb88446fdb8/pypdfium2-5.3.0-py3-none-musllinux_1_2_s390x.whl", hash = "sha256:ea4f9db2d3575f22cd41f4c7a855240ded842f135e59a961b5b1351a65ce2b6e", size = 4997777, upload-time = "2026-01-05T16:28:53.589Z" }, + { url = "https://files.pythonhosted.org/packages/9d/38/cdd4ed085c264234a59ad32df1dfe432c77a7403da2381e0fcc1ba60b74e/pypdfium2-5.3.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0ea24409613df350223c6afc50911c99dca0d43ddaf2616c5a1ebdffa3e1bcb5", size = 4179895, upload-time = "2026-01-05T16:28:55.322Z" }, + { url = "https://files.pythonhosted.org/packages/93/4c/d2f40145c9012482699664f615d7ae540a346c84f68a8179449e69dcc4d8/pypdfium2-5.3.0-py3-none-win32.whl", hash = "sha256:5bf695d603f9eb8fdd7c1786add5cf420d57fbc81df142ed63c029ce29614df9", size = 2993570, upload-time = "2026-01-05T16:28:58.37Z" }, + { url = "https://files.pythonhosted.org/packages/2c/dc/1388ea650020c26ef3f68856b9227e7f153dcaf445e7e4674a0b8f26891e/pypdfium2-5.3.0-py3-none-win_amd64.whl", hash = "sha256:8365af22a39d4373c265f8e90e561cd64d4ddeaf5e6a66546a8caed216ab9574", size = 3102340, upload-time = "2026-01-05T16:28:59.933Z" }, + { url = "https://files.pythonhosted.org/packages/c8/71/a433668d33999b3aeb2c2dda18aaf24948e862ea2ee148078a35daac6c1c/pypdfium2-5.3.0-py3-none-win_arm64.whl", hash = "sha256:0b2c6bf825e084d91d34456be54921da31e9199d9530b05435d69d1a80501a12", size = 2940987, upload-time = "2026-01-05T16:29:01.511Z" }, ] [[package]] name = "pyright" -version = "1.1.407" +version = "1.1.408" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nodeenv" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a6/1b/0aa08ee42948b61745ac5b5b5ccaec4669e8884b53d31c8ec20b2fcd6b6f/pyright-1.1.407.tar.gz", hash = "sha256:099674dba5c10489832d4a4b2d302636152a9a42d317986c38474c76fe562262", size = 4122872, upload-time = "2025-10-24T23:17:15.145Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/b2/5db700e52554b8f025faa9c3c624c59f1f6c8841ba81ab97641b54322f16/pyright-1.1.408.tar.gz", hash = "sha256:f28f2321f96852fa50b5829ea492f6adb0e6954568d1caa3f3af3a5f555eb684", size = 4400578, upload-time = "2026-01-08T08:07:38.795Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/93/b69052907d032b00c40cb656d21438ec00b3a471733de137a3f65a49a0a0/pyright-1.1.407-py3-none-any.whl", hash = "sha256:6dd419f54fcc13f03b52285796d65e639786373f433e243f8b94cf93a7444d21", size = 5997008, upload-time = "2025-10-24T23:17:13.159Z" }, + { url = "https://files.pythonhosted.org/packages/0c/82/a2c93e32800940d9573fb28c346772a14778b84ba7524e691b324620ab89/pyright-1.1.408-py3-none-any.whl", hash = "sha256:090b32865f4fdb1e0e6cd82bf5618480d48eecd2eb2e70f960982a3d9a4c17c1", size = 6399144, upload-time = "2026-01-08T08:07:37.082Z" }, ] [[package]] name = "pytest" -version = "9.0.1" +version = "9.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -2219,9 +3561,9 @@ dependencies = [ { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/07/56/f013048ac4bc4c1d9be45afd4ab209ea62822fb1598f40687e6bf45dcea4/pytest-9.0.1.tar.gz", hash = "sha256:3e9c069ea73583e255c3b21cf46b8d3c56f6e3a1a8f6da94ccb0fcf57b9d73c8", size = 1564125, upload-time = "2025-11-12T13:05:09.333Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/8b/6300fb80f858cda1c51ffa17075df5d846757081d11ab4aa35cef9e6258b/pytest-9.0.1-py3-none-any.whl", hash = "sha256:67be0030d194df2dfa7b556f2e56fb3c3315bd5c8822c6951162b92b32ce7dad", size = 373668, upload-time = "2025-11-12T13:05:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, ] [[package]] @@ -2263,6 +3605,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] +[[package]] +name = "python-docx" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/f7/eddfe33871520adab45aaa1a71f0402a2252050c14c7e3009446c8f4701c/python_docx-1.2.0.tar.gz", hash = "sha256:7bc9d7b7d8a69c9c02ca09216118c86552704edc23bac179283f2e38f86220ce", size = 5723256, upload-time = "2025-06-16T20:46:27.921Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/00/1e03a4989fa5795da308cd774f05b704ace555a70f9bf9d3be057b680bcf/python_docx-1.2.0-py3-none-any.whl", hash = "sha256:3fd478f3250fbbbfd3b94fe1e985955737c145627498896a8a6bf81f4baf66c7", size = 252987, upload-time = "2025-06-16T20:46:22.506Z" }, +] + [[package]] name = "python-dotenv" version = "1.2.1" @@ -2272,6 +3627,52 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, ] +[[package]] +name = "python-pptx" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, + { name = "pillow" }, + { name = "typing-extensions" }, + { name = "xlsxwriter" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/a9/0c0db8d37b2b8a645666f7fd8accea4c6224e013c42b1d5c17c93590cd06/python_pptx-1.0.2.tar.gz", hash = "sha256:479a8af0eaf0f0d76b6f00b0887732874ad2e3188230315290cd1f9dd9cc7095", size = 10109297, upload-time = "2024-08-07T17:33:37.772Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/4f/00be2196329ebbff56ce564aa94efb0fbc828d00de250b1980de1a34ab49/python_pptx-1.0.2-py3-none-any.whl", hash = "sha256:160838e0b8565a8b1f67947675886e9fea18aa5e795db7ae531606d68e785cba", size = 472788, upload-time = "2024-08-07T17:33:28.192Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/40/44efbb0dfbd33aca6a6483191dae0716070ed99e2ecb0c53683f400a0b4f/pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3", size = 8760432, upload-time = "2025-07-14T20:13:05.9Z" }, + { url = "https://files.pythonhosted.org/packages/5e/bf/360243b1e953bd254a82f12653974be395ba880e7ec23e3731d9f73921cc/pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b", size = 9590103, upload-time = "2025-07-14T20:13:07.698Z" }, + { url = "https://files.pythonhosted.org/packages/57/38/d290720e6f138086fb3d5ffe0b6caa019a791dd57866940c82e4eeaf2012/pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b", size = 8778557, upload-time = "2025-07-14T20:13:11.11Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031, upload-time = "2025-07-14T20:13:13.266Z" }, + { url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308, upload-time = "2025-07-14T20:13:15.147Z" }, + { url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930, upload-time = "2025-07-14T20:13:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, +] + [[package]] name = "pyyaml" version = "6.0.3" @@ -2336,6 +3737,163 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, ] +[[package]] +name = "rapidocr" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorlog" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "omegaconf" }, + { name = "opencv-python" }, + { name = "pillow" }, + { name = "pyclipper" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "shapely" }, + { name = "six" }, + { name = "tqdm" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/f5/d93dfbb4f96acefe3a978ab2d0eab74d96c0388870f8d275792317c4857c/rapidocr-3.5.0-py3-none-any.whl", hash = "sha256:c0e361ffd0a26d2f27827361b0c563a87ee311e62b8c56ad52472c0fc6f1d78a", size = 15063134, upload-time = "2026-01-06T14:37:28.117Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "regex" +version = "2026.1.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/86/07d5056945f9ec4590b518171c4254a5925832eb727b56d3c38a7476f316/regex-2026.1.15.tar.gz", hash = "sha256:164759aa25575cbc0651bef59a0b18353e54300d79ace8084c818ad8ac72b7d5", size = 414811, upload-time = "2026-01-14T23:18:02.775Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/d2/e6ee96b7dff201a83f650241c52db8e5bd080967cb93211f57aa448dc9d6/regex-2026.1.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4e3dd93c8f9abe8aa4b6c652016da9a3afa190df5ad822907efe6b206c09896e", size = 488166, upload-time = "2026-01-14T23:13:46.408Z" }, + { url = "https://files.pythonhosted.org/packages/23/8a/819e9ce14c9f87af026d0690901b3931f3101160833e5d4c8061fa3a1b67/regex-2026.1.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:97499ff7862e868b1977107873dd1a06e151467129159a6ffd07b66706ba3a9f", size = 290632, upload-time = "2026-01-14T23:13:48.688Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c3/23dfe15af25d1d45b07dfd4caa6003ad710dcdcb4c4b279909bdfe7a2de8/regex-2026.1.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0bda75ebcac38d884240914c6c43d8ab5fb82e74cde6da94b43b17c411aa4c2b", size = 288500, upload-time = "2026-01-14T23:13:50.503Z" }, + { url = "https://files.pythonhosted.org/packages/c6/31/1adc33e2f717df30d2f4d973f8776d2ba6ecf939301efab29fca57505c95/regex-2026.1.15-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7dcc02368585334f5bc81fc73a2a6a0bbade60e7d83da21cead622faf408f32c", size = 781670, upload-time = "2026-01-14T23:13:52.453Z" }, + { url = "https://files.pythonhosted.org/packages/23/ce/21a8a22d13bc4adcb927c27b840c948f15fc973e21ed2346c1bd0eae22dc/regex-2026.1.15-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:693b465171707bbe882a7a05de5e866f33c76aa449750bee94a8d90463533cc9", size = 850820, upload-time = "2026-01-14T23:13:54.894Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/3eeacdf587a4705a44484cd0b30e9230a0e602811fb3e2cc32268c70d509/regex-2026.1.15-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b0d190e6f013ea938623a58706d1469a62103fb2a241ce2873a9906e0386582c", size = 898777, upload-time = "2026-01-14T23:13:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/79/a9/1898a077e2965c35fc22796488141a22676eed2d73701e37c73ad7c0b459/regex-2026.1.15-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ff818702440a5878a81886f127b80127f5d50563753a28211482867f8318106", size = 791750, upload-time = "2026-01-14T23:13:58.527Z" }, + { url = "https://files.pythonhosted.org/packages/4c/84/e31f9d149a178889b3817212827f5e0e8c827a049ff31b4b381e76b26e2d/regex-2026.1.15-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f052d1be37ef35a54e394de66136e30fa1191fab64f71fc06ac7bc98c9a84618", size = 782674, upload-time = "2026-01-14T23:13:59.874Z" }, + { url = "https://files.pythonhosted.org/packages/d2/ff/adf60063db24532add6a1676943754a5654dcac8237af024ede38244fd12/regex-2026.1.15-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6bfc31a37fd1592f0c4fc4bfc674b5c42e52efe45b4b7a6a14f334cca4bcebe4", size = 767906, upload-time = "2026-01-14T23:14:01.298Z" }, + { url = "https://files.pythonhosted.org/packages/af/3e/e6a216cee1e2780fec11afe7fc47b6f3925d7264e8149c607ac389fd9b1a/regex-2026.1.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3d6ce5ae80066b319ae3bc62fd55a557c9491baa5efd0d355f0de08c4ba54e79", size = 774798, upload-time = "2026-01-14T23:14:02.715Z" }, + { url = "https://files.pythonhosted.org/packages/0f/98/23a4a8378a9208514ed3efc7e7850c27fa01e00ed8557c958df0335edc4a/regex-2026.1.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1704d204bd42b6bb80167df0e4554f35c255b579ba99616def38f69e14a5ccb9", size = 845861, upload-time = "2026-01-14T23:14:04.824Z" }, + { url = "https://files.pythonhosted.org/packages/f8/57/d7605a9d53bd07421a8785d349cd29677fe660e13674fa4c6cbd624ae354/regex-2026.1.15-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:e3174a5ed4171570dc8318afada56373aa9289eb6dc0d96cceb48e7358b0e220", size = 755648, upload-time = "2026-01-14T23:14:06.371Z" }, + { url = "https://files.pythonhosted.org/packages/6f/76/6f2e24aa192da1e299cc1101674a60579d3912391867ce0b946ba83e2194/regex-2026.1.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:87adf5bd6d72e3e17c9cb59ac4096b1faaf84b7eb3037a5ffa61c4b4370f0f13", size = 836250, upload-time = "2026-01-14T23:14:08.343Z" }, + { url = "https://files.pythonhosted.org/packages/11/3a/1f2a1d29453299a7858eab7759045fc3d9d1b429b088dec2dc85b6fa16a2/regex-2026.1.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e85dc94595f4d766bd7d872a9de5ede1ca8d3063f3bdf1e2c725f5eb411159e3", size = 779919, upload-time = "2026-01-14T23:14:09.954Z" }, + { url = "https://files.pythonhosted.org/packages/c0/67/eab9bc955c9dcc58e9b222c801e39cff7ca0b04261792a2149166ce7e792/regex-2026.1.15-cp310-cp310-win32.whl", hash = "sha256:21ca32c28c30d5d65fc9886ff576fc9b59bbca08933e844fa2363e530f4c8218", size = 265888, upload-time = "2026-01-14T23:14:11.35Z" }, + { url = "https://files.pythonhosted.org/packages/1d/62/31d16ae24e1f8803bddb0885508acecaec997fcdcde9c243787103119ae4/regex-2026.1.15-cp310-cp310-win_amd64.whl", hash = "sha256:3038a62fc7d6e5547b8915a3d927a0fbeef84cdbe0b1deb8c99bbd4a8961b52a", size = 277830, upload-time = "2026-01-14T23:14:12.908Z" }, + { url = "https://files.pythonhosted.org/packages/e5/36/5d9972bccd6417ecd5a8be319cebfd80b296875e7f116c37fb2a2deecebf/regex-2026.1.15-cp310-cp310-win_arm64.whl", hash = "sha256:505831646c945e3e63552cc1b1b9b514f0e93232972a2d5bedbcc32f15bc82e3", size = 270376, upload-time = "2026-01-14T23:14:14.782Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c9/0c80c96eab96948363d270143138d671d5731c3a692b417629bf3492a9d6/regex-2026.1.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ae6020fb311f68d753b7efa9d4b9a5d47a5d6466ea0d5e3b5a471a960ea6e4a", size = 488168, upload-time = "2026-01-14T23:14:16.129Z" }, + { url = "https://files.pythonhosted.org/packages/17/f0/271c92f5389a552494c429e5cc38d76d1322eb142fb5db3c8ccc47751468/regex-2026.1.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eddf73f41225942c1f994914742afa53dc0d01a6e20fe14b878a1b1edc74151f", size = 290636, upload-time = "2026-01-14T23:14:17.715Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f9/5f1fd077d106ca5655a0f9ff8f25a1ab55b92128b5713a91ed7134ff688e/regex-2026.1.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e8cd52557603f5c66a548f69421310886b28b7066853089e1a71ee710e1cdc1", size = 288496, upload-time = "2026-01-14T23:14:19.326Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e1/8f43b03a4968c748858ec77f746c286d81f896c2e437ccf050ebc5d3128c/regex-2026.1.15-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5170907244b14303edc5978f522f16c974f32d3aa92109fabc2af52411c9433b", size = 793503, upload-time = "2026-01-14T23:14:20.922Z" }, + { url = "https://files.pythonhosted.org/packages/8d/4e/a39a5e8edc5377a46a7c875c2f9a626ed3338cb3bb06931be461c3e1a34a/regex-2026.1.15-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2748c1ec0663580b4510bd89941a31560b4b439a0b428b49472a3d9944d11cd8", size = 860535, upload-time = "2026-01-14T23:14:22.405Z" }, + { url = "https://files.pythonhosted.org/packages/dc/1c/9dce667a32a9477f7a2869c1c767dc00727284a9fa3ff5c09a5c6c03575e/regex-2026.1.15-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2f2775843ca49360508d080eaa87f94fa248e2c946bbcd963bb3aae14f333413", size = 907225, upload-time = "2026-01-14T23:14:23.897Z" }, + { url = "https://files.pythonhosted.org/packages/a4/3c/87ca0a02736d16b6262921425e84b48984e77d8e4e572c9072ce96e66c30/regex-2026.1.15-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9ea2604370efc9a174c1b5dcc81784fb040044232150f7f33756049edfc9026", size = 800526, upload-time = "2026-01-14T23:14:26.039Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ff/647d5715aeea7c87bdcbd2f578f47b415f55c24e361e639fe8c0cc88878f/regex-2026.1.15-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0dcd31594264029b57bf16f37fd7248a70b3b764ed9e0839a8f271b2d22c0785", size = 773446, upload-time = "2026-01-14T23:14:28.109Z" }, + { url = "https://files.pythonhosted.org/packages/af/89/bf22cac25cb4ba0fe6bff52ebedbb65b77a179052a9d6037136ae93f42f4/regex-2026.1.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c08c1f3e34338256732bd6938747daa3c0d5b251e04b6e43b5813e94d503076e", size = 783051, upload-time = "2026-01-14T23:14:29.929Z" }, + { url = "https://files.pythonhosted.org/packages/1e/f4/6ed03e71dca6348a5188363a34f5e26ffd5db1404780288ff0d79513bce4/regex-2026.1.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e43a55f378df1e7a4fa3547c88d9a5a9b7113f653a66821bcea4718fe6c58763", size = 854485, upload-time = "2026-01-14T23:14:31.366Z" }, + { url = "https://files.pythonhosted.org/packages/d9/9a/8e8560bd78caded8eb137e3e47612430a05b9a772caf60876435192d670a/regex-2026.1.15-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:f82110ab962a541737bd0ce87978d4c658f06e7591ba899192e2712a517badbb", size = 762195, upload-time = "2026-01-14T23:14:32.802Z" }, + { url = "https://files.pythonhosted.org/packages/38/6b/61fc710f9aa8dfcd764fe27d37edfaa023b1a23305a0d84fccd5adb346ea/regex-2026.1.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:27618391db7bdaf87ac6c92b31e8f0dfb83a9de0075855152b720140bda177a2", size = 845986, upload-time = "2026-01-14T23:14:34.898Z" }, + { url = "https://files.pythonhosted.org/packages/fd/2e/fbee4cb93f9d686901a7ca8d94285b80405e8c34fe4107f63ffcbfb56379/regex-2026.1.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bfb0d6be01fbae8d6655c8ca21b3b72458606c4aec9bbc932db758d47aba6db1", size = 788992, upload-time = "2026-01-14T23:14:37.116Z" }, + { url = "https://files.pythonhosted.org/packages/ed/14/3076348f3f586de64b1ab75a3fbabdaab7684af7f308ad43be7ef1849e55/regex-2026.1.15-cp311-cp311-win32.whl", hash = "sha256:b10e42a6de0e32559a92f2f8dc908478cc0fa02838d7dbe764c44dca3fa13569", size = 265893, upload-time = "2026-01-14T23:14:38.426Z" }, + { url = "https://files.pythonhosted.org/packages/0f/19/772cf8b5fc803f5c89ba85d8b1870a1ca580dc482aa030383a9289c82e44/regex-2026.1.15-cp311-cp311-win_amd64.whl", hash = "sha256:e9bf3f0bbdb56633c07d7116ae60a576f846efdd86a8848f8d62b749e1209ca7", size = 277840, upload-time = "2026-01-14T23:14:39.785Z" }, + { url = "https://files.pythonhosted.org/packages/78/84/d05f61142709474da3c0853222d91086d3e1372bcdab516c6fd8d80f3297/regex-2026.1.15-cp311-cp311-win_arm64.whl", hash = "sha256:41aef6f953283291c4e4e6850607bd71502be67779586a61472beacb315c97ec", size = 270374, upload-time = "2026-01-14T23:14:41.592Z" }, + { url = "https://files.pythonhosted.org/packages/92/81/10d8cf43c807d0326efe874c1b79f22bfb0fb226027b0b19ebc26d301408/regex-2026.1.15-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4c8fcc5793dde01641a35905d6731ee1548f02b956815f8f1cab89e515a5bdf1", size = 489398, upload-time = "2026-01-14T23:14:43.741Z" }, + { url = "https://files.pythonhosted.org/packages/90/b0/7c2a74e74ef2a7c32de724658a69a862880e3e4155cba992ba04d1c70400/regex-2026.1.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bfd876041a956e6a90ad7cdb3f6a630c07d491280bfeed4544053cd434901681", size = 291339, upload-time = "2026-01-14T23:14:45.183Z" }, + { url = "https://files.pythonhosted.org/packages/19/4d/16d0773d0c818417f4cc20aa0da90064b966d22cd62a8c46765b5bd2d643/regex-2026.1.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9250d087bc92b7d4899ccd5539a1b2334e44eee85d848c4c1aef8e221d3f8c8f", size = 289003, upload-time = "2026-01-14T23:14:47.25Z" }, + { url = "https://files.pythonhosted.org/packages/c6/e4/1fc4599450c9f0863d9406e944592d968b8d6dfd0d552a7d569e43bceada/regex-2026.1.15-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8a154cf6537ebbc110e24dabe53095e714245c272da9c1be05734bdad4a61aa", size = 798656, upload-time = "2026-01-14T23:14:48.77Z" }, + { url = "https://files.pythonhosted.org/packages/b2/e6/59650d73a73fa8a60b3a590545bfcf1172b4384a7df2e7fe7b9aab4e2da9/regex-2026.1.15-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8050ba2e3ea1d8731a549e83c18d2f0999fbc99a5f6bd06b4c91449f55291804", size = 864252, upload-time = "2026-01-14T23:14:50.528Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ab/1d0f4d50a1638849a97d731364c9a80fa304fec46325e48330c170ee8e80/regex-2026.1.15-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf065240704cb8951cc04972cf107063917022511273e0969bdb34fc173456c", size = 912268, upload-time = "2026-01-14T23:14:52.952Z" }, + { url = "https://files.pythonhosted.org/packages/dd/df/0d722c030c82faa1d331d1921ee268a4e8fb55ca8b9042c9341c352f17fa/regex-2026.1.15-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c32bef3e7aeee75746748643667668ef941d28b003bfc89994ecf09a10f7a1b5", size = 803589, upload-time = "2026-01-14T23:14:55.182Z" }, + { url = "https://files.pythonhosted.org/packages/66/23/33289beba7ccb8b805c6610a8913d0131f834928afc555b241caabd422a9/regex-2026.1.15-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d5eaa4a4c5b1906bd0d2508d68927f15b81821f85092e06f1a34a4254b0e1af3", size = 775700, upload-time = "2026-01-14T23:14:56.707Z" }, + { url = "https://files.pythonhosted.org/packages/e7/65/bf3a42fa6897a0d3afa81acb25c42f4b71c274f698ceabd75523259f6688/regex-2026.1.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:86c1077a3cc60d453d4084d5b9649065f3bf1184e22992bd322e1f081d3117fb", size = 787928, upload-time = "2026-01-14T23:14:58.312Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f5/13bf65864fc314f68cdd6d8ca94adcab064d4d39dbd0b10fef29a9da48fc/regex-2026.1.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:2b091aefc05c78d286657cd4db95f2e6313375ff65dcf085e42e4c04d9c8d410", size = 858607, upload-time = "2026-01-14T23:15:00.657Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/040e589834d7a439ee43fb0e1e902bc81bd58a5ba81acffe586bb3321d35/regex-2026.1.15-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:57e7d17f59f9ebfa9667e6e5a1c0127b96b87cb9cede8335482451ed00788ba4", size = 763729, upload-time = "2026-01-14T23:15:02.248Z" }, + { url = "https://files.pythonhosted.org/packages/9b/84/6921e8129687a427edf25a34a5594b588b6d88f491320b9de5b6339a4fcb/regex-2026.1.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c6c4dcdfff2c08509faa15d36ba7e5ef5fcfab25f1e8f85a0c8f45bc3a30725d", size = 850697, upload-time = "2026-01-14T23:15:03.878Z" }, + { url = "https://files.pythonhosted.org/packages/8a/87/3d06143d4b128f4229158f2de5de6c8f2485170c7221e61bf381313314b2/regex-2026.1.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cf8ff04c642716a7f2048713ddc6278c5fd41faa3b9cab12607c7abecd012c22", size = 789849, upload-time = "2026-01-14T23:15:06.102Z" }, + { url = "https://files.pythonhosted.org/packages/77/69/c50a63842b6bd48850ebc7ab22d46e7a2a32d824ad6c605b218441814639/regex-2026.1.15-cp312-cp312-win32.whl", hash = "sha256:82345326b1d8d56afbe41d881fdf62f1926d7264b2fc1537f99ae5da9aad7913", size = 266279, upload-time = "2026-01-14T23:15:07.678Z" }, + { url = "https://files.pythonhosted.org/packages/f2/36/39d0b29d087e2b11fd8191e15e81cce1b635fcc845297c67f11d0d19274d/regex-2026.1.15-cp312-cp312-win_amd64.whl", hash = "sha256:4def140aa6156bc64ee9912383d4038f3fdd18fee03a6f222abd4de6357ce42a", size = 277166, upload-time = "2026-01-14T23:15:09.257Z" }, + { url = "https://files.pythonhosted.org/packages/28/32/5b8e476a12262748851fa8ab1b0be540360692325975b094e594dfebbb52/regex-2026.1.15-cp312-cp312-win_arm64.whl", hash = "sha256:c6c565d9a6e1a8d783c1948937ffc377dd5771e83bd56de8317c450a954d2056", size = 270415, upload-time = "2026-01-14T23:15:10.743Z" }, + { url = "https://files.pythonhosted.org/packages/f8/2e/6870bb16e982669b674cce3ee9ff2d1d46ab80528ee6bcc20fb2292efb60/regex-2026.1.15-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e69d0deeb977ffe7ed3d2e4439360089f9c3f217ada608f0f88ebd67afb6385e", size = 489164, upload-time = "2026-01-14T23:15:13.962Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/9774542e203849b0286badf67199970a44ebdb0cc5fb739f06e47ada72f8/regex-2026.1.15-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3601ffb5375de85a16f407854d11cca8fe3f5febbe3ac78fb2866bb220c74d10", size = 291218, upload-time = "2026-01-14T23:15:15.647Z" }, + { url = "https://files.pythonhosted.org/packages/b2/87/b0cda79f22b8dee05f774922a214da109f9a4c0eca5da2c9d72d77ea062c/regex-2026.1.15-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4c5ef43b5c2d4114eb8ea424bb8c9cec01d5d17f242af88b2448f5ee81caadbc", size = 288895, upload-time = "2026-01-14T23:15:17.788Z" }, + { url = "https://files.pythonhosted.org/packages/3b/6a/0041f0a2170d32be01ab981d6346c83a8934277d82c780d60b127331f264/regex-2026.1.15-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:968c14d4f03e10b2fd960f1d5168c1f0ac969381d3c1fcc973bc45fb06346599", size = 798680, upload-time = "2026-01-14T23:15:19.342Z" }, + { url = "https://files.pythonhosted.org/packages/58/de/30e1cfcdbe3e891324aa7568b7c968771f82190df5524fabc1138cb2d45a/regex-2026.1.15-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:56a5595d0f892f214609c9f76b41b7428bed439d98dc961efafdd1354d42baae", size = 864210, upload-time = "2026-01-14T23:15:22.005Z" }, + { url = "https://files.pythonhosted.org/packages/64/44/4db2f5c5ca0ccd40ff052ae7b1e9731352fcdad946c2b812285a7505ca75/regex-2026.1.15-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf650f26087363434c4e560011f8e4e738f6f3e029b85d4904c50135b86cfa5", size = 912358, upload-time = "2026-01-14T23:15:24.569Z" }, + { url = "https://files.pythonhosted.org/packages/79/b6/e6a5665d43a7c42467138c8a2549be432bad22cbd206f5ec87162de74bd7/regex-2026.1.15-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18388a62989c72ac24de75f1449d0fb0b04dfccd0a1a7c1c43af5eb503d890f6", size = 803583, upload-time = "2026-01-14T23:15:26.526Z" }, + { url = "https://files.pythonhosted.org/packages/e7/53/7cd478222169d85d74d7437e74750005e993f52f335f7c04ff7adfda3310/regex-2026.1.15-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6d220a2517f5893f55daac983bfa9fe998a7dbcaee4f5d27a88500f8b7873788", size = 775782, upload-time = "2026-01-14T23:15:29.352Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b5/75f9a9ee4b03a7c009fe60500fe550b45df94f0955ca29af16333ef557c5/regex-2026.1.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c9c08c2fbc6120e70abff5d7f28ffb4d969e14294fb2143b4b5c7d20e46d1714", size = 787978, upload-time = "2026-01-14T23:15:31.295Z" }, + { url = "https://files.pythonhosted.org/packages/72/b3/79821c826245bbe9ccbb54f6eadb7879c722fd3e0248c17bfc90bf54e123/regex-2026.1.15-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7ef7d5d4bd49ec7364315167a4134a015f61e8266c6d446fc116a9ac4456e10d", size = 858550, upload-time = "2026-01-14T23:15:33.558Z" }, + { url = "https://files.pythonhosted.org/packages/4a/85/2ab5f77a1c465745bfbfcb3ad63178a58337ae8d5274315e2cc623a822fa/regex-2026.1.15-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:6e42844ad64194fa08d5ccb75fe6a459b9b08e6d7296bd704460168d58a388f3", size = 763747, upload-time = "2026-01-14T23:15:35.206Z" }, + { url = "https://files.pythonhosted.org/packages/6d/84/c27df502d4bfe2873a3e3a7cf1bdb2b9cc10284d1a44797cf38bed790470/regex-2026.1.15-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cfecdaa4b19f9ca534746eb3b55a5195d5c95b88cac32a205e981ec0a22b7d31", size = 850615, upload-time = "2026-01-14T23:15:37.523Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b7/658a9782fb253680aa8ecb5ccbb51f69e088ed48142c46d9f0c99b46c575/regex-2026.1.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:08df9722d9b87834a3d701f3fca570b2be115654dbfd30179f30ab2f39d606d3", size = 789951, upload-time = "2026-01-14T23:15:39.582Z" }, + { url = "https://files.pythonhosted.org/packages/fc/2a/5928af114441e059f15b2f63e188bd00c6529b3051c974ade7444b85fcda/regex-2026.1.15-cp313-cp313-win32.whl", hash = "sha256:d426616dae0967ca225ab12c22274eb816558f2f99ccb4a1d52ca92e8baf180f", size = 266275, upload-time = "2026-01-14T23:15:42.108Z" }, + { url = "https://files.pythonhosted.org/packages/4f/16/5bfbb89e435897bff28cf0352a992ca719d9e55ebf8b629203c96b6ce4f7/regex-2026.1.15-cp313-cp313-win_amd64.whl", hash = "sha256:febd38857b09867d3ed3f4f1af7d241c5c50362e25ef43034995b77a50df494e", size = 277145, upload-time = "2026-01-14T23:15:44.244Z" }, + { url = "https://files.pythonhosted.org/packages/56/c1/a09ff7392ef4233296e821aec5f78c51be5e91ffde0d163059e50fd75835/regex-2026.1.15-cp313-cp313-win_arm64.whl", hash = "sha256:8e32f7896f83774f91499d239e24cebfadbc07639c1494bb7213983842348337", size = 270411, upload-time = "2026-01-14T23:15:45.858Z" }, + { url = "https://files.pythonhosted.org/packages/3c/38/0cfd5a78e5c6db00e6782fdae70458f89850ce95baa5e8694ab91d89744f/regex-2026.1.15-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:ec94c04149b6a7b8120f9f44565722c7ae31b7a6d2275569d2eefa76b83da3be", size = 492068, upload-time = "2026-01-14T23:15:47.616Z" }, + { url = "https://files.pythonhosted.org/packages/50/72/6c86acff16cb7c959c4355826bbf06aad670682d07c8f3998d9ef4fee7cd/regex-2026.1.15-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:40c86d8046915bb9aeb15d3f3f15b6fd500b8ea4485b30e1bbc799dab3fe29f8", size = 292756, upload-time = "2026-01-14T23:15:49.307Z" }, + { url = "https://files.pythonhosted.org/packages/4e/58/df7fb69eadfe76526ddfce28abdc0af09ffe65f20c2c90932e89d705153f/regex-2026.1.15-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:726ea4e727aba21643205edad8f2187ec682d3305d790f73b7a51c7587b64bdd", size = 291114, upload-time = "2026-01-14T23:15:51.484Z" }, + { url = "https://files.pythonhosted.org/packages/ed/6c/a4011cd1cf96b90d2cdc7e156f91efbd26531e822a7fbb82a43c1016678e/regex-2026.1.15-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1cb740d044aff31898804e7bf1181cc72c03d11dfd19932b9911ffc19a79070a", size = 807524, upload-time = "2026-01-14T23:15:53.102Z" }, + { url = "https://files.pythonhosted.org/packages/1d/25/a53ffb73183f69c3e9f4355c4922b76d2840aee160af6af5fac229b6201d/regex-2026.1.15-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:05d75a668e9ea16f832390d22131fe1e8acc8389a694c8febc3e340b0f810b93", size = 873455, upload-time = "2026-01-14T23:15:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/66/0b/8b47fc2e8f97d9b4a851736f3890a5f786443aa8901061c55f24c955f45b/regex-2026.1.15-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d991483606f3dbec93287b9f35596f41aa2e92b7c2ebbb935b63f409e243c9af", size = 915007, upload-time = "2026-01-14T23:15:57.041Z" }, + { url = "https://files.pythonhosted.org/packages/c2/fa/97de0d681e6d26fabe71968dbee06dd52819e9a22fdce5dac7256c31ed84/regex-2026.1.15-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:194312a14819d3e44628a44ed6fea6898fdbecb0550089d84c403475138d0a09", size = 812794, upload-time = "2026-01-14T23:15:58.916Z" }, + { url = "https://files.pythonhosted.org/packages/22/38/e752f94e860d429654aa2b1c51880bff8dfe8f084268258adf9151cf1f53/regex-2026.1.15-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fe2fda4110a3d0bc163c2e0664be44657431440722c5c5315c65155cab92f9e5", size = 781159, upload-time = "2026-01-14T23:16:00.817Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a7/d739ffaef33c378fc888302a018d7f81080393d96c476b058b8c64fd2b0d/regex-2026.1.15-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:124dc36c85d34ef2d9164da41a53c1c8c122cfb1f6e1ec377a1f27ee81deb794", size = 795558, upload-time = "2026-01-14T23:16:03.267Z" }, + { url = "https://files.pythonhosted.org/packages/3e/c4/542876f9a0ac576100fc73e9c75b779f5c31e3527576cfc9cb3009dcc58a/regex-2026.1.15-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1774cd1981cd212506a23a14dba7fdeaee259f5deba2df6229966d9911e767a", size = 868427, upload-time = "2026-01-14T23:16:05.646Z" }, + { url = "https://files.pythonhosted.org/packages/fc/0f/d5655bea5b22069e32ae85a947aa564912f23758e112cdb74212848a1a1b/regex-2026.1.15-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:b5f7d8d2867152cdb625e72a530d2ccb48a3d199159144cbdd63870882fb6f80", size = 769939, upload-time = "2026-01-14T23:16:07.542Z" }, + { url = "https://files.pythonhosted.org/packages/20/06/7e18a4fa9d326daeda46d471a44ef94201c46eaa26dbbb780b5d92cbfdda/regex-2026.1.15-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:492534a0ab925d1db998defc3c302dae3616a2fc3fe2e08db1472348f096ddf2", size = 854753, upload-time = "2026-01-14T23:16:10.395Z" }, + { url = "https://files.pythonhosted.org/packages/3b/67/dc8946ef3965e166f558ef3b47f492bc364e96a265eb4a2bb3ca765c8e46/regex-2026.1.15-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c661fc820cfb33e166bf2450d3dadbda47c8d8981898adb9b6fe24e5e582ba60", size = 799559, upload-time = "2026-01-14T23:16:12.347Z" }, + { url = "https://files.pythonhosted.org/packages/a5/61/1bba81ff6d50c86c65d9fd84ce9699dd106438ee4cdb105bf60374ee8412/regex-2026.1.15-cp313-cp313t-win32.whl", hash = "sha256:99ad739c3686085e614bf77a508e26954ff1b8f14da0e3765ff7abbf7799f952", size = 268879, upload-time = "2026-01-14T23:16:14.049Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5e/cef7d4c5fb0ea3ac5c775fd37db5747f7378b29526cc83f572198924ff47/regex-2026.1.15-cp313-cp313t-win_amd64.whl", hash = "sha256:32655d17905e7ff8ba5c764c43cb124e34a9245e45b83c22e81041e1071aee10", size = 280317, upload-time = "2026-01-14T23:16:15.718Z" }, + { url = "https://files.pythonhosted.org/packages/b4/52/4317f7a5988544e34ab57b4bde0f04944c4786128c933fb09825924d3e82/regex-2026.1.15-cp313-cp313t-win_arm64.whl", hash = "sha256:b2a13dd6a95e95a489ca242319d18fc02e07ceb28fa9ad146385194d95b3c829", size = 271551, upload-time = "2026-01-14T23:16:17.533Z" }, + { url = "https://files.pythonhosted.org/packages/52/0a/47fa888ec7cbbc7d62c5f2a6a888878e76169170ead271a35239edd8f0e8/regex-2026.1.15-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:d920392a6b1f353f4aa54328c867fec3320fa50657e25f64abf17af054fc97ac", size = 489170, upload-time = "2026-01-14T23:16:19.835Z" }, + { url = "https://files.pythonhosted.org/packages/ac/c4/d000e9b7296c15737c9301708e9e7fbdea009f8e93541b6b43bdb8219646/regex-2026.1.15-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b5a28980a926fa810dbbed059547b02783952e2efd9c636412345232ddb87ff6", size = 291146, upload-time = "2026-01-14T23:16:21.541Z" }, + { url = "https://files.pythonhosted.org/packages/f9/b6/921cc61982e538682bdf3bdf5b2c6ab6b34368da1f8e98a6c1ddc503c9cf/regex-2026.1.15-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:621f73a07595d83f28952d7bd1e91e9d1ed7625fb7af0064d3516674ec93a2a2", size = 288986, upload-time = "2026-01-14T23:16:23.381Z" }, + { url = "https://files.pythonhosted.org/packages/ca/33/eb7383dde0bbc93f4fb9d03453aab97e18ad4024ac7e26cef8d1f0a2cff0/regex-2026.1.15-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d7d92495f47567a9b1669c51fc8d6d809821849063d168121ef801bbc213846", size = 799098, upload-time = "2026-01-14T23:16:25.088Z" }, + { url = "https://files.pythonhosted.org/packages/27/56/b664dccae898fc8d8b4c23accd853f723bde0f026c747b6f6262b688029c/regex-2026.1.15-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8dd16fba2758db7a3780a051f245539c4451ca20910f5a5e6ea1c08d06d4a76b", size = 864980, upload-time = "2026-01-14T23:16:27.297Z" }, + { url = "https://files.pythonhosted.org/packages/16/40/0999e064a170eddd237bae9ccfcd8f28b3aa98a38bf727a086425542a4fc/regex-2026.1.15-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1e1808471fbe44c1a63e5f577a1d5f02fe5d66031dcbdf12f093ffc1305a858e", size = 911607, upload-time = "2026-01-14T23:16:29.235Z" }, + { url = "https://files.pythonhosted.org/packages/07/78/c77f644b68ab054e5a674fb4da40ff7bffb2c88df58afa82dbf86573092d/regex-2026.1.15-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0751a26ad39d4f2ade8fe16c59b2bf5cb19eb3d2cd543e709e583d559bd9efde", size = 803358, upload-time = "2026-01-14T23:16:31.369Z" }, + { url = "https://files.pythonhosted.org/packages/27/31/d4292ea8566eaa551fafc07797961c5963cf5235c797cc2ae19b85dfd04d/regex-2026.1.15-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0f0c7684c7f9ca241344ff95a1de964f257a5251968484270e91c25a755532c5", size = 775833, upload-time = "2026-01-14T23:16:33.141Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b2/cff3bf2fea4133aa6fb0d1e370b37544d18c8350a2fa118c7e11d1db0e14/regex-2026.1.15-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:74f45d170a21df41508cb67165456538425185baaf686281fa210d7e729abc34", size = 788045, upload-time = "2026-01-14T23:16:35.005Z" }, + { url = "https://files.pythonhosted.org/packages/8d/99/2cb9b69045372ec877b6f5124bda4eb4253bc58b8fe5848c973f752bc52c/regex-2026.1.15-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:f1862739a1ffb50615c0fde6bae6569b5efbe08d98e59ce009f68a336f64da75", size = 859374, upload-time = "2026-01-14T23:16:36.919Z" }, + { url = "https://files.pythonhosted.org/packages/09/16/710b0a5abe8e077b1729a562d2f297224ad079f3a66dce46844c193416c8/regex-2026.1.15-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:453078802f1b9e2b7303fb79222c054cb18e76f7bdc220f7530fdc85d319f99e", size = 763940, upload-time = "2026-01-14T23:16:38.685Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d1/7585c8e744e40eb3d32f119191969b91de04c073fca98ec14299041f6e7e/regex-2026.1.15-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:a30a68e89e5a218b8b23a52292924c1f4b245cb0c68d1cce9aec9bbda6e2c160", size = 850112, upload-time = "2026-01-14T23:16:40.646Z" }, + { url = "https://files.pythonhosted.org/packages/af/d6/43e1dd85df86c49a347aa57c1f69d12c652c7b60e37ec162e3096194a278/regex-2026.1.15-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9479cae874c81bf610d72b85bb681a94c95722c127b55445285fb0e2c82db8e1", size = 789586, upload-time = "2026-01-14T23:16:42.799Z" }, + { url = "https://files.pythonhosted.org/packages/93/38/77142422f631e013f316aaae83234c629555729a9fbc952b8a63ac91462a/regex-2026.1.15-cp314-cp314-win32.whl", hash = "sha256:d639a750223132afbfb8f429c60d9d318aeba03281a5f1ab49f877456448dcf1", size = 271691, upload-time = "2026-01-14T23:16:44.671Z" }, + { url = "https://files.pythonhosted.org/packages/4a/a9/ab16b4649524ca9e05213c1cdbb7faa85cc2aa90a0230d2f796cbaf22736/regex-2026.1.15-cp314-cp314-win_amd64.whl", hash = "sha256:4161d87f85fa831e31469bfd82c186923070fc970b9de75339b68f0c75b51903", size = 280422, upload-time = "2026-01-14T23:16:46.607Z" }, + { url = "https://files.pythonhosted.org/packages/be/2a/20fd057bf3521cb4791f69f869635f73e0aaf2b9ad2d260f728144f9047c/regex-2026.1.15-cp314-cp314-win_arm64.whl", hash = "sha256:91c5036ebb62663a6b3999bdd2e559fd8456d17e2b485bf509784cd31a8b1705", size = 273467, upload-time = "2026-01-14T23:16:48.967Z" }, + { url = "https://files.pythonhosted.org/packages/ad/77/0b1e81857060b92b9cad239104c46507dd481b3ff1fa79f8e7f865aae38a/regex-2026.1.15-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:ee6854c9000a10938c79238de2379bea30c82e4925a371711af45387df35cab8", size = 492073, upload-time = "2026-01-14T23:16:51.154Z" }, + { url = "https://files.pythonhosted.org/packages/70/f3/f8302b0c208b22c1e4f423147e1913fd475ddd6230565b299925353de644/regex-2026.1.15-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2c2b80399a422348ce5de4fe40c418d6299a0fa2803dd61dc0b1a2f28e280fcf", size = 292757, upload-time = "2026-01-14T23:16:53.08Z" }, + { url = "https://files.pythonhosted.org/packages/bf/f0/ef55de2460f3b4a6da9d9e7daacd0cb79d4ef75c64a2af316e68447f0df0/regex-2026.1.15-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:dca3582bca82596609959ac39e12b7dad98385b4fefccb1151b937383cec547d", size = 291122, upload-time = "2026-01-14T23:16:55.383Z" }, + { url = "https://files.pythonhosted.org/packages/cf/55/bb8ccbacabbc3a11d863ee62a9f18b160a83084ea95cdfc5d207bfc3dd75/regex-2026.1.15-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef71d476caa6692eea743ae5ea23cde3260677f70122c4d258ca952e5c2d4e84", size = 807761, upload-time = "2026-01-14T23:16:57.251Z" }, + { url = "https://files.pythonhosted.org/packages/8f/84/f75d937f17f81e55679a0509e86176e29caa7298c38bd1db7ce9c0bf6075/regex-2026.1.15-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c243da3436354f4af6c3058a3f81a97d47ea52c9bd874b52fd30274853a1d5df", size = 873538, upload-time = "2026-01-14T23:16:59.349Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d9/0da86327df70349aa8d86390da91171bd3ca4f0e7c1d1d453a9c10344da3/regex-2026.1.15-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8355ad842a7c7e9e5e55653eade3b7d1885ba86f124dd8ab1f722f9be6627434", size = 915066, upload-time = "2026-01-14T23:17:01.607Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5e/f660fb23fc77baa2a61aa1f1fe3a4eea2bbb8a286ddec148030672e18834/regex-2026.1.15-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f192a831d9575271a22d804ff1a5355355723f94f31d9eef25f0d45a152fdc1a", size = 812938, upload-time = "2026-01-14T23:17:04.366Z" }, + { url = "https://files.pythonhosted.org/packages/69/33/a47a29bfecebbbfd1e5cd3f26b28020a97e4820f1c5148e66e3b7d4b4992/regex-2026.1.15-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:166551807ec20d47ceaeec380081f843e88c8949780cd42c40f18d16168bed10", size = 781314, upload-time = "2026-01-14T23:17:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/65/ec/7ec2bbfd4c3f4e494a24dec4c6943a668e2030426b1b8b949a6462d2c17b/regex-2026.1.15-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f9ca1cbdc0fbfe5e6e6f8221ef2309988db5bcede52443aeaee9a4ad555e0dac", size = 795652, upload-time = "2026-01-14T23:17:08.521Z" }, + { url = "https://files.pythonhosted.org/packages/46/79/a5d8651ae131fe27d7c521ad300aa7f1c7be1dbeee4d446498af5411b8a9/regex-2026.1.15-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b30bcbd1e1221783c721483953d9e4f3ab9c5d165aa709693d3f3946747b1aea", size = 868550, upload-time = "2026-01-14T23:17:10.573Z" }, + { url = "https://files.pythonhosted.org/packages/06/b7/25635d2809664b79f183070786a5552dd4e627e5aedb0065f4e3cf8ee37d/regex-2026.1.15-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:2a8d7b50c34578d0d3bf7ad58cde9652b7d683691876f83aedc002862a35dc5e", size = 769981, upload-time = "2026-01-14T23:17:12.871Z" }, + { url = "https://files.pythonhosted.org/packages/16/8b/fc3fcbb2393dcfa4a6c5ffad92dc498e842df4581ea9d14309fcd3c55fb9/regex-2026.1.15-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:9d787e3310c6a6425eb346be4ff2ccf6eece63017916fd77fe8328c57be83521", size = 854780, upload-time = "2026-01-14T23:17:14.837Z" }, + { url = "https://files.pythonhosted.org/packages/d0/38/dde117c76c624713c8a2842530be9c93ca8b606c0f6102d86e8cd1ce8bea/regex-2026.1.15-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:619843841e220adca114118533a574a9cd183ed8a28b85627d2844c500a2b0db", size = 799778, upload-time = "2026-01-14T23:17:17.369Z" }, + { url = "https://files.pythonhosted.org/packages/e3/0d/3a6cfa9ae99606afb612d8fb7a66b245a9d5ff0f29bb347c8a30b6ad561b/regex-2026.1.15-cp314-cp314t-win32.whl", hash = "sha256:e90b8db97f6f2c97eb045b51a6b2c5ed69cedd8392459e0642d4199b94fabd7e", size = 274667, upload-time = "2026-01-14T23:17:19.301Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b2/297293bb0742fd06b8d8e2572db41a855cdf1cae0bf009b1cb74fe07e196/regex-2026.1.15-cp314-cp314t-win_amd64.whl", hash = "sha256:5ef19071f4ac9f0834793af85bd04a920b4407715624e40cb7a0631a11137cdf", size = 284386, upload-time = "2026-01-14T23:17:21.231Z" }, + { url = "https://files.pythonhosted.org/packages/95/e4/a3b9480c78cf8ee86626cb06f8d931d74d775897d44201ccb813097ae697/regex-2026.1.15-cp314-cp314t-win_arm64.whl", hash = "sha256:ca89c5e596fc05b015f27561b3793dc2fa0917ea0d7507eebb448efd35274a70", size = 274837, upload-time = "2026-01-14T23:17:23.146Z" }, +] + [[package]] name = "requests" version = "2.32.5" @@ -2377,6 +3935,128 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" }, ] +[[package]] +name = "rpds-py" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload-time = "2025-11-30T20:21:33.256Z" }, + { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload-time = "2025-11-30T20:21:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload-time = "2025-11-30T20:21:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload-time = "2025-11-30T20:21:37.728Z" }, + { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload-time = "2025-11-30T20:21:38.92Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload-time = "2025-11-30T20:21:40.407Z" }, + { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload-time = "2025-11-30T20:21:42.17Z" }, + { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload-time = "2025-11-30T20:21:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload-time = "2025-11-30T20:21:44.994Z" }, + { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload-time = "2025-11-30T20:21:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload-time = "2025-11-30T20:21:48.709Z" }, + { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload-time = "2025-11-30T20:21:50.024Z" }, + { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload-time = "2025-11-30T20:21:51.32Z" }, + { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload-time = "2025-11-30T20:21:52.505Z" }, + { url = "https://files.pythonhosted.org/packages/4d/6e/f964e88b3d2abee2a82c1ac8366da848fce1c6d834dc2132c3fda3970290/rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", size = 370157, upload-time = "2025-11-30T20:21:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/94/ba/24e5ebb7c1c82e74c4e4f33b2112a5573ddc703915b13a073737b59b86e0/rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", size = 359676, upload-time = "2025-11-30T20:21:55.475Z" }, + { url = "https://files.pythonhosted.org/packages/84/86/04dbba1b087227747d64d80c3b74df946b986c57af0a9f0c98726d4d7a3b/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", size = 389938, upload-time = "2025-11-30T20:21:57.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/bb/1463f0b1722b7f45431bdd468301991d1328b16cffe0b1c2918eba2c4eee/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", size = 402932, upload-time = "2025-11-30T20:21:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/99/ee/2520700a5c1f2d76631f948b0736cdf9b0acb25abd0ca8e889b5c62ac2e3/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", size = 525830, upload-time = "2025-11-30T20:21:59.699Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ad/bd0331f740f5705cc555a5e17fdf334671262160270962e69a2bdef3bf76/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", size = 412033, upload-time = "2025-11-30T20:22:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1e/372195d326549bb51f0ba0f2ecb9874579906b97e08880e7a65c3bef1a99/rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", size = 390828, upload-time = "2025-11-30T20:22:02.723Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/d88bb33294e3e0c76bc8f351a3721212713629ffca1700fa94979cb3eae8/rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", size = 404683, upload-time = "2025-11-30T20:22:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/c759a8d42bcb5289c1fac697cd92f6fe01a018dd937e62ae77e0e7f15702/rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", size = 421583, upload-time = "2025-11-30T20:22:05.814Z" }, + { url = "https://files.pythonhosted.org/packages/2b/81/e729761dbd55ddf5d84ec4ff1f47857f4374b0f19bdabfcf929164da3e24/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", size = 572496, upload-time = "2025-11-30T20:22:07.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/f6/69066a924c3557c9c30baa6ec3a0aa07526305684c6f86c696b08860726c/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", size = 598669, upload-time = "2025-11-30T20:22:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/5f/48/905896b1eb8a05630d20333d1d8ffd162394127b74ce0b0784ae04498d32/rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", size = 561011, upload-time = "2025-11-30T20:22:11.309Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/cd3027c7e279d22e5eb431dd3c0fbc677bed58797fe7581e148f3f68818b/rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", size = 221406, upload-time = "2025-11-30T20:22:13.101Z" }, + { url = "https://files.pythonhosted.org/packages/fa/5b/e7b7aa136f28462b344e652ee010d4de26ee9fd16f1bfd5811f5153ccf89/rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", size = 236024, upload-time = "2025-11-30T20:22:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/14/a6/364bba985e4c13658edb156640608f2c9e1d3ea3c81b27aa9d889fff0e31/rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", size = 229069, upload-time = "2025-11-30T20:22:16.577Z" }, + { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload-time = "2025-11-30T20:22:19.297Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload-time = "2025-11-30T20:22:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload-time = "2025-11-30T20:22:23.408Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload-time = "2025-11-30T20:22:25.16Z" }, + { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload-time = "2025-11-30T20:22:26.505Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload-time = "2025-11-30T20:22:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload-time = "2025-11-30T20:22:29.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload-time = "2025-11-30T20:22:31.469Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload-time = "2025-11-30T20:22:32.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload-time = "2025-11-30T20:22:34.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload-time = "2025-11-30T20:22:35.903Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload-time = "2025-11-30T20:22:37.271Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload-time = "2025-11-30T20:22:39.021Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload-time = "2025-11-30T20:22:40.493Z" }, + { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload-time = "2025-11-30T20:22:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload-time = "2025-11-30T20:22:43.479Z" }, + { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload-time = "2025-11-30T20:22:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload-time = "2025-11-30T20:22:46.103Z" }, + { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload-time = "2025-11-30T20:22:47.458Z" }, + { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload-time = "2025-11-30T20:22:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload-time = "2025-11-30T20:22:50.196Z" }, + { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload-time = "2025-11-30T20:22:51.87Z" }, + { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload-time = "2025-11-30T20:22:53.341Z" }, + { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload-time = "2025-11-30T20:22:54.778Z" }, + { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload-time = "2025-11-30T20:22:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload-time = "2025-11-30T20:22:58.2Z" }, + { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload-time = "2025-11-30T20:23:00.209Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload-time = "2025-11-30T20:23:02.008Z" }, + { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload-time = "2025-11-30T20:23:03.43Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload-time = "2025-11-30T20:23:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload-time = "2025-11-30T20:23:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload-time = "2025-11-30T20:23:07.825Z" }, + { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload-time = "2025-11-30T20:23:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload-time = "2025-11-30T20:23:11.186Z" }, + { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload-time = "2025-11-30T20:23:12.864Z" }, + { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload-time = "2025-11-30T20:23:14.638Z" }, + { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload-time = "2025-11-30T20:23:16.105Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload-time = "2025-11-30T20:23:17.539Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload-time = "2025-11-30T20:23:19.029Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload-time = "2025-11-30T20:23:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload-time = "2025-11-30T20:23:22.488Z" }, + { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload-time = "2025-11-30T20:23:24.449Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload-time = "2025-11-30T20:23:25.908Z" }, + { url = "https://files.pythonhosted.org/packages/86/81/dad16382ebbd3d0e0328776d8fd7ca94220e4fa0798d1dc5e7da48cb3201/rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0", size = 362099, upload-time = "2025-11-30T20:23:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/2b/60/19f7884db5d5603edf3c6bce35408f45ad3e97e10007df0e17dd57af18f8/rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be", size = 353192, upload-time = "2025-11-30T20:23:29.151Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c4/76eb0e1e72d1a9c4703c69607cec123c29028bff28ce41588792417098ac/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f", size = 384080, upload-time = "2025-11-30T20:23:30.785Z" }, + { url = "https://files.pythonhosted.org/packages/72/87/87ea665e92f3298d1b26d78814721dc39ed8d2c74b86e83348d6b48a6f31/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f", size = 394841, upload-time = "2025-11-30T20:23:32.209Z" }, + { url = "https://files.pythonhosted.org/packages/77/ad/7783a89ca0587c15dcbf139b4a8364a872a25f861bdb88ed99f9b0dec985/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87", size = 516670, upload-time = "2025-11-30T20:23:33.742Z" }, + { url = "https://files.pythonhosted.org/packages/5b/3c/2882bdac942bd2172f3da574eab16f309ae10a3925644e969536553cb4ee/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18", size = 408005, upload-time = "2025-11-30T20:23:35.253Z" }, + { url = "https://files.pythonhosted.org/packages/ce/81/9a91c0111ce1758c92516a3e44776920b579d9a7c09b2b06b642d4de3f0f/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad", size = 382112, upload-time = "2025-11-30T20:23:36.842Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8e/1da49d4a107027e5fbc64daeab96a0706361a2918da10cb41769244b805d/rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07", size = 399049, upload-time = "2025-11-30T20:23:38.343Z" }, + { url = "https://files.pythonhosted.org/packages/df/5a/7ee239b1aa48a127570ec03becbb29c9d5a9eb092febbd1699d567cae859/rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f", size = 415661, upload-time = "2025-11-30T20:23:40.263Z" }, + { url = "https://files.pythonhosted.org/packages/70/ea/caa143cf6b772f823bc7929a45da1fa83569ee49b11d18d0ada7f5ee6fd6/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65", size = 565606, upload-time = "2025-11-30T20:23:42.186Z" }, + { url = "https://files.pythonhosted.org/packages/64/91/ac20ba2d69303f961ad8cf55bf7dbdb4763f627291ba3d0d7d67333cced9/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f", size = 591126, upload-time = "2025-11-30T20:23:44.086Z" }, + { url = "https://files.pythonhosted.org/packages/21/20/7ff5f3c8b00c8a95f75985128c26ba44503fb35b8e0259d812766ea966c7/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53", size = 553371, upload-time = "2025-11-30T20:23:46.004Z" }, + { url = "https://files.pythonhosted.org/packages/72/c7/81dadd7b27c8ee391c132a6b192111ca58d866577ce2d9b0ca157552cce0/rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed", size = 215298, upload-time = "2025-11-30T20:23:47.696Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/1aaac33287e8cfb07aab2e6b8ac1deca62f6f65411344f1433c55e6f3eb8/rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950", size = 228604, upload-time = "2025-11-30T20:23:49.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/95/ab005315818cc519ad074cb7784dae60d939163108bd2b394e60dc7b5461/rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6", size = 222391, upload-time = "2025-11-30T20:23:50.96Z" }, + { url = "https://files.pythonhosted.org/packages/9e/68/154fe0194d83b973cdedcdcc88947a2752411165930182ae41d983dcefa6/rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb", size = 364868, upload-time = "2025-11-30T20:23:52.494Z" }, + { url = "https://files.pythonhosted.org/packages/83/69/8bbc8b07ec854d92a8b75668c24d2abcb1719ebf890f5604c61c9369a16f/rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8", size = 353747, upload-time = "2025-11-30T20:23:54.036Z" }, + { url = "https://files.pythonhosted.org/packages/ab/00/ba2e50183dbd9abcce9497fa5149c62b4ff3e22d338a30d690f9af970561/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7", size = 383795, upload-time = "2025-11-30T20:23:55.556Z" }, + { url = "https://files.pythonhosted.org/packages/05/6f/86f0272b84926bcb0e4c972262f54223e8ecc556b3224d281e6598fc9268/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898", size = 393330, upload-time = "2025-11-30T20:23:57.033Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e9/0e02bb2e6dc63d212641da45df2b0bf29699d01715913e0d0f017ee29438/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e", size = 518194, upload-time = "2025-11-30T20:23:58.637Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ca/be7bca14cf21513bdf9c0606aba17d1f389ea2b6987035eb4f62bd923f25/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419", size = 408340, upload-time = "2025-11-30T20:24:00.2Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c7/736e00ebf39ed81d75544c0da6ef7b0998f8201b369acf842f9a90dc8fce/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551", size = 383765, upload-time = "2025-11-30T20:24:01.759Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3f/da50dfde9956aaf365c4adc9533b100008ed31aea635f2b8d7b627e25b49/rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8", size = 396834, upload-time = "2025-11-30T20:24:03.687Z" }, + { url = "https://files.pythonhosted.org/packages/4e/00/34bcc2565b6020eab2623349efbdec810676ad571995911f1abdae62a3a0/rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5", size = 415470, upload-time = "2025-11-30T20:24:05.232Z" }, + { url = "https://files.pythonhosted.org/packages/8c/28/882e72b5b3e6f718d5453bd4d0d9cf8df36fddeb4ddbbab17869d5868616/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404", size = 565630, upload-time = "2025-11-30T20:24:06.878Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/04a65539c17692de5b85c6e293520fd01317fd878ea1995f0367d4532fb1/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856", size = 591148, upload-time = "2025-11-30T20:24:08.445Z" }, + { url = "https://files.pythonhosted.org/packages/85/70/92482ccffb96f5441aab93e26c4d66489eb599efdcf96fad90c14bbfb976/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40", size = 556030, upload-time = "2025-11-30T20:24:10.956Z" }, + { url = "https://files.pythonhosted.org/packages/20/53/7c7e784abfa500a2b6b583b147ee4bb5a2b3747a9166bab52fec4b5b5e7d/rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0", size = 211570, upload-time = "2025-11-30T20:24:12.735Z" }, + { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532, upload-time = "2025-11-30T20:24:14.634Z" }, + { url = "https://files.pythonhosted.org/packages/69/71/3f34339ee70521864411f8b6992e7ab13ac30d8e4e3309e07c7361767d91/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", size = 372292, upload-time = "2025-11-30T20:24:16.537Z" }, + { url = "https://files.pythonhosted.org/packages/57/09/f183df9b8f2d66720d2ef71075c59f7e1b336bec7ee4c48f0a2b06857653/rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", size = 362128, upload-time = "2025-11-30T20:24:18.086Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/5c2594e937253457342e078f0cc1ded3dd7b2ad59afdbf2d354869110a02/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", size = 391542, upload-time = "2025-11-30T20:24:20.092Z" }, + { url = "https://files.pythonhosted.org/packages/49/5c/31ef1afd70b4b4fbdb2800249f34c57c64beb687495b10aec0365f53dfc4/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", size = 404004, upload-time = "2025-11-30T20:24:22.231Z" }, + { url = "https://files.pythonhosted.org/packages/e3/63/0cfbea38d05756f3440ce6534d51a491d26176ac045e2707adc99bb6e60a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", size = 527063, upload-time = "2025-11-30T20:24:24.302Z" }, + { url = "https://files.pythonhosted.org/packages/42/e6/01e1f72a2456678b0f618fc9a1a13f882061690893c192fcad9f2926553a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", size = 413099, upload-time = "2025-11-30T20:24:25.916Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/8df56677f209003dcbb180765520c544525e3ef21ea72279c98b9aa7c7fb/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", size = 392177, upload-time = "2025-11-30T20:24:27.834Z" }, + { url = "https://files.pythonhosted.org/packages/4a/b4/0a771378c5f16f8115f796d1f437950158679bcd2a7c68cf251cfb00ed5b/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", size = 406015, upload-time = "2025-11-30T20:24:29.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/d8/456dbba0af75049dc6f63ff295a2f92766b9d521fa00de67a2bd6427d57a/rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", size = 423736, upload-time = "2025-11-30T20:24:31.22Z" }, + { url = "https://files.pythonhosted.org/packages/13/64/b4d76f227d5c45a7e0b796c674fd81b0a6c4fbd48dc29271857d8219571c/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", size = 573981, upload-time = "2025-11-30T20:24:32.934Z" }, + { url = "https://files.pythonhosted.org/packages/20/91/092bacadeda3edf92bf743cc96a7be133e13a39cdbfd7b5082e7ab638406/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", size = 599782, upload-time = "2025-11-30T20:24:35.169Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, +] + [[package]] name = "rsa" version = "4.9.1" @@ -2389,30 +4069,46 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, ] +[[package]] +name = "rtree" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/09/7302695875a019514de9a5dd17b8320e7a19d6e7bc8f85dcfb79a4ce2da3/rtree-1.4.1.tar.gz", hash = "sha256:c6b1b3550881e57ebe530cc6cffefc87cd9bf49c30b37b894065a9f810875e46", size = 52425, upload-time = "2025-08-13T19:32:01.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/d9/108cd989a4c0954e60b3cdc86fd2826407702b5375f6dfdab2802e5fed98/rtree-1.4.1-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:d672184298527522d4914d8ae53bf76982b86ca420b0acde9298a7a87d81d4a4", size = 468484, upload-time = "2025-08-13T19:31:50.593Z" }, + { url = "https://files.pythonhosted.org/packages/f3/cf/2710b6fd6b07ea0aef317b29f335790ba6adf06a28ac236078ed9bd8a91d/rtree-1.4.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a7e48d805e12011c2cf739a29d6a60ae852fb1de9fc84220bbcef67e6e595d7d", size = 436325, upload-time = "2025-08-13T19:31:52.367Z" }, + { url = "https://files.pythonhosted.org/packages/55/e1/4d075268a46e68db3cac51846eb6a3ab96ed481c585c5a1ad411b3c23aad/rtree-1.4.1-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:efa8c4496e31e9ad58ff6c7df89abceac7022d906cb64a3e18e4fceae6b77f65", size = 459789, upload-time = "2025-08-13T19:31:53.926Z" }, + { url = "https://files.pythonhosted.org/packages/d1/75/e5d44be90525cd28503e7f836d077ae6663ec0687a13ba7810b4114b3668/rtree-1.4.1-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:12de4578f1b3381a93a655846900be4e3d5f4cd5e306b8b00aa77c1121dc7e8c", size = 507644, upload-time = "2025-08-13T19:31:55.164Z" }, + { url = "https://files.pythonhosted.org/packages/fd/85/b8684f769a142163b52859a38a486493b05bafb4f2fb71d4f945de28ebf9/rtree-1.4.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b558edda52eca3e6d1ee629042192c65e6b7f2c150d6d6cd207ce82f85be3967", size = 1454478, upload-time = "2025-08-13T19:31:56.808Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a4/c2292b95246b9165cc43a0c3757e80995d58bc9b43da5cb47ad6e3535213/rtree-1.4.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f155bc8d6bac9dcd383481dee8c130947a4866db1d16cb6dff442329a038a0dc", size = 1555140, upload-time = "2025-08-13T19:31:58.031Z" }, + { url = "https://files.pythonhosted.org/packages/74/25/5282c8270bfcd620d3e73beb35b40ac4ab00f0a898d98ebeb41ef0989ec8/rtree-1.4.1-py3-none-win_amd64.whl", hash = "sha256:efe125f416fd27150197ab8521158662943a40f87acab8028a1aac4ad667a489", size = 389358, upload-time = "2025-08-13T19:31:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/3f/50/0a9e7e7afe7339bd5e36911f0ceb15fed51945836ed803ae5afd661057fd/rtree-1.4.1-py3-none-win_arm64.whl", hash = "sha256:3d46f55729b28138e897ffef32f7ce93ac335cb67f9120125ad3742a220800f0", size = 355253, upload-time = "2025-08-13T19:32:00.296Z" }, +] + [[package]] name = "ruff" -version = "0.14.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b7/5b/dd7406afa6c95e3d8fa9d652b6d6dd17dd4a6bf63cb477014e8ccd3dcd46/ruff-0.14.7.tar.gz", hash = "sha256:3417deb75d23bd14a722b57b0a1435561db65f0ad97435b4cf9f85ffcef34ae5", size = 5727324, upload-time = "2025-11-28T20:55:10.525Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8c/b1/7ea5647aaf90106f6d102230e5df874613da43d1089864da1553b899ba5e/ruff-0.14.7-py3-none-linux_armv6l.whl", hash = "sha256:b9d5cb5a176c7236892ad7224bc1e63902e4842c460a0b5210701b13e3de4fca", size = 13414475, upload-time = "2025-11-28T20:54:54.569Z" }, - { url = "https://files.pythonhosted.org/packages/af/19/fddb4cd532299db9cdaf0efdc20f5c573ce9952a11cb532d3b859d6d9871/ruff-0.14.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3f64fe375aefaf36ca7d7250292141e39b4cea8250427482ae779a2aa5d90015", size = 13634613, upload-time = "2025-11-28T20:55:17.54Z" }, - { url = "https://files.pythonhosted.org/packages/40/2b/469a66e821d4f3de0440676ed3e04b8e2a1dc7575cf6fa3ba6d55e3c8557/ruff-0.14.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:93e83bd3a9e1a3bda64cb771c0d47cda0e0d148165013ae2d3554d718632d554", size = 12765458, upload-time = "2025-11-28T20:55:26.128Z" }, - { url = "https://files.pythonhosted.org/packages/f1/05/0b001f734fe550bcfde4ce845948ac620ff908ab7241a39a1b39bb3c5f49/ruff-0.14.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3838948e3facc59a6070795de2ae16e5786861850f78d5914a03f12659e88f94", size = 13236412, upload-time = "2025-11-28T20:55:28.602Z" }, - { url = "https://files.pythonhosted.org/packages/11/36/8ed15d243f011b4e5da75cd56d6131c6766f55334d14ba31cce5461f28aa/ruff-0.14.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:24c8487194d38b6d71cd0fd17a5b6715cda29f59baca1defe1e3a03240f851d1", size = 13182949, upload-time = "2025-11-28T20:55:33.265Z" }, - { url = "https://files.pythonhosted.org/packages/3b/cf/fcb0b5a195455729834f2a6eadfe2e4519d8ca08c74f6d2b564a4f18f553/ruff-0.14.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79c73db6833f058a4be8ffe4a0913b6d4ad41f6324745179bd2aa09275b01d0b", size = 13816470, upload-time = "2025-11-28T20:55:08.203Z" }, - { url = "https://files.pythonhosted.org/packages/7f/5d/34a4748577ff7a5ed2f2471456740f02e86d1568a18c9faccfc73bd9ca3f/ruff-0.14.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:12eb7014fccff10fc62d15c79d8a6be4d0c2d60fe3f8e4d169a0d2def75f5dad", size = 15289621, upload-time = "2025-11-28T20:55:30.837Z" }, - { url = "https://files.pythonhosted.org/packages/53/53/0a9385f047a858ba133d96f3f8e3c9c66a31cc7c4b445368ef88ebeac209/ruff-0.14.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c623bbdc902de7ff715a93fa3bb377a4e42dd696937bf95669118773dbf0c50", size = 14975817, upload-time = "2025-11-28T20:55:24.107Z" }, - { url = "https://files.pythonhosted.org/packages/a8/d7/2f1c32af54c3b46e7fadbf8006d8b9bcfbea535c316b0bd8813d6fb25e5d/ruff-0.14.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f53accc02ed2d200fa621593cdb3c1ae06aa9b2c3cae70bc96f72f0000ae97a9", size = 14284549, upload-time = "2025-11-28T20:55:06.08Z" }, - { url = "https://files.pythonhosted.org/packages/92/05/434ddd86becd64629c25fb6b4ce7637dd52a45cc4a4415a3008fe61c27b9/ruff-0.14.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:281f0e61a23fcdcffca210591f0f53aafaa15f9025b5b3f9706879aaa8683bc4", size = 14071389, upload-time = "2025-11-28T20:55:35.617Z" }, - { url = "https://files.pythonhosted.org/packages/ff/50/fdf89d4d80f7f9d4f420d26089a79b3bb1538fe44586b148451bc2ba8d9c/ruff-0.14.7-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:dbbaa5e14148965b91cb090236931182ee522a5fac9bc5575bafc5c07b9f9682", size = 14202679, upload-time = "2025-11-28T20:55:01.472Z" }, - { url = "https://files.pythonhosted.org/packages/77/54/87b34988984555425ce967f08a36df0ebd339bb5d9d0e92a47e41151eafc/ruff-0.14.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1464b6e54880c0fe2f2d6eaefb6db15373331414eddf89d6b903767ae2458143", size = 13147677, upload-time = "2025-11-28T20:55:19.933Z" }, - { url = "https://files.pythonhosted.org/packages/67/29/f55e4d44edfe053918a16a3299e758e1c18eef216b7a7092550d7a9ec51c/ruff-0.14.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f217ed871e4621ea6128460df57b19ce0580606c23aeab50f5de425d05226784", size = 13151392, upload-time = "2025-11-28T20:55:21.967Z" }, - { url = "https://files.pythonhosted.org/packages/36/69/47aae6dbd4f1d9b4f7085f4d9dcc84e04561ee7ad067bf52e0f9b02e3209/ruff-0.14.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6be02e849440ed3602d2eb478ff7ff07d53e3758f7948a2a598829660988619e", size = 13412230, upload-time = "2025-11-28T20:55:12.749Z" }, - { url = "https://files.pythonhosted.org/packages/b7/4b/6e96cb6ba297f2ba502a231cd732ed7c3de98b1a896671b932a5eefa3804/ruff-0.14.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:19a0f116ee5e2b468dfe80c41c84e2bbd6b74f7b719bee86c2ecde0a34563bcc", size = 14195397, upload-time = "2025-11-28T20:54:56.896Z" }, - { url = "https://files.pythonhosted.org/packages/69/82/251d5f1aa4dcad30aed491b4657cecd9fb4274214da6960ffec144c260f7/ruff-0.14.7-py3-none-win32.whl", hash = "sha256:e33052c9199b347c8937937163b9b149ef6ab2e4bb37b042e593da2e6f6cccfa", size = 13126751, upload-time = "2025-11-28T20:55:03.47Z" }, - { url = "https://files.pythonhosted.org/packages/a8/b5/d0b7d145963136b564806f6584647af45ab98946660d399ec4da79cae036/ruff-0.14.7-py3-none-win_amd64.whl", hash = "sha256:e17a20ad0d3fad47a326d773a042b924d3ac31c6ca6deb6c72e9e6b5f661a7c6", size = 14531726, upload-time = "2025-11-28T20:54:59.121Z" }, - { url = "https://files.pythonhosted.org/packages/1d/d2/1637f4360ada6a368d3265bf39f2cf737a0aaab15ab520fc005903e883f8/ruff-0.14.7-py3-none-win_arm64.whl", hash = "sha256:be4d653d3bea1b19742fcc6502354e32f65cd61ff2fbdb365803ef2c2aec6228", size = 13609215, upload-time = "2025-11-28T20:55:15.375Z" }, +version = "0.14.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/50/0a/1914efb7903174b381ee2ffeebb4253e729de57f114e63595114c8ca451f/ruff-0.14.13.tar.gz", hash = "sha256:83cd6c0763190784b99650a20fec7633c59f6ebe41c5cc9d45ee42749563ad47", size = 6059504, upload-time = "2026-01-15T20:15:16.918Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/ae/0deefbc65ca74b0ab1fd3917f94dc3b398233346a74b8bbb0a916a1a6bf6/ruff-0.14.13-py3-none-linux_armv6l.whl", hash = "sha256:76f62c62cd37c276cb03a275b198c7c15bd1d60c989f944db08a8c1c2dbec18b", size = 13062418, upload-time = "2026-01-15T20:14:50.779Z" }, + { url = "https://files.pythonhosted.org/packages/47/df/5916604faa530a97a3c154c62a81cb6b735c0cb05d1e26d5ad0f0c8ac48a/ruff-0.14.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:914a8023ece0528d5cc33f5a684f5f38199bbb566a04815c2c211d8f40b5d0ed", size = 13442344, upload-time = "2026-01-15T20:15:07.94Z" }, + { url = "https://files.pythonhosted.org/packages/4c/f3/e0e694dd69163c3a1671e102aa574a50357536f18a33375050334d5cd517/ruff-0.14.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d24899478c35ebfa730597a4a775d430ad0d5631b8647a3ab368c29b7e7bd063", size = 12354720, upload-time = "2026-01-15T20:15:09.854Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e8/67f5fcbbaee25e8fc3b56cc33e9892eca7ffe09f773c8e5907757a7e3bdb/ruff-0.14.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9aaf3870f14d925bbaf18b8a2347ee0ae7d95a2e490e4d4aea6813ed15ebc80e", size = 12774493, upload-time = "2026-01-15T20:15:20.908Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ce/d2e9cb510870b52a9565d885c0d7668cc050e30fa2c8ac3fb1fda15c083d/ruff-0.14.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac5b7f63dd3b27cc811850f5ffd8fff845b00ad70e60b043aabf8d6ecc304e09", size = 12815174, upload-time = "2026-01-15T20:15:05.74Z" }, + { url = "https://files.pythonhosted.org/packages/88/00/c38e5da58beebcf4fa32d0ddd993b63dfacefd02ab7922614231330845bf/ruff-0.14.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78d2b1097750d90ba82ce4ba676e85230a0ed694178ca5e61aa9b459970b3eb9", size = 13680909, upload-time = "2026-01-15T20:15:14.537Z" }, + { url = "https://files.pythonhosted.org/packages/61/61/cd37c9dd5bd0a3099ba79b2a5899ad417d8f3b04038810b0501a80814fd7/ruff-0.14.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:7d0bf87705acbbcb8d4c24b2d77fbb73d40210a95c3903b443cd9e30824a5032", size = 15144215, upload-time = "2026-01-15T20:15:22.886Z" }, + { url = "https://files.pythonhosted.org/packages/56/8a/85502d7edbf98c2df7b8876f316c0157359165e16cdf98507c65c8d07d3d/ruff-0.14.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3eb5da8e2c9e9f13431032fdcbe7681de9ceda5835efee3269417c13f1fed5c", size = 14706067, upload-time = "2026-01-15T20:14:48.271Z" }, + { url = "https://files.pythonhosted.org/packages/7e/2f/de0df127feb2ee8c1e54354dc1179b4a23798f0866019528c938ba439aca/ruff-0.14.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:642442b42957093811cd8d2140dfadd19c7417030a7a68cf8d51fcdd5f217427", size = 14133916, upload-time = "2026-01-15T20:14:57.357Z" }, + { url = "https://files.pythonhosted.org/packages/0d/77/9b99686bb9fe07a757c82f6f95e555c7a47801a9305576a9c67e0a31d280/ruff-0.14.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4acdf009f32b46f6e8864af19cbf6841eaaed8638e65c8dac845aea0d703c841", size = 13859207, upload-time = "2026-01-15T20:14:55.111Z" }, + { url = "https://files.pythonhosted.org/packages/7d/46/2bdcb34a87a179a4d23022d818c1c236cb40e477faf0d7c9afb6813e5876/ruff-0.14.13-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:591a7f68860ea4e003917d19b5c4f5ac39ff558f162dc753a2c5de897fd5502c", size = 14043686, upload-time = "2026-01-15T20:14:52.841Z" }, + { url = "https://files.pythonhosted.org/packages/1a/a9/5c6a4f56a0512c691cf143371bcf60505ed0f0860f24a85da8bd123b2bf1/ruff-0.14.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:774c77e841cc6e046fc3e91623ce0903d1cd07e3a36b1a9fe79b81dab3de506b", size = 12663837, upload-time = "2026-01-15T20:15:18.921Z" }, + { url = "https://files.pythonhosted.org/packages/fe/bb/b920016ece7651fa7fcd335d9d199306665486694d4361547ccb19394c44/ruff-0.14.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:61f4e40077a1248436772bb6512db5fc4457fe4c49e7a94ea7c5088655dd21ae", size = 12805867, upload-time = "2026-01-15T20:14:59.272Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b3/0bd909851e5696cd21e32a8fc25727e5f58f1934b3596975503e6e85415c/ruff-0.14.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6d02f1428357fae9e98ac7aa94b7e966fd24151088510d32cf6f902d6c09235e", size = 13208528, upload-time = "2026-01-15T20:15:03.732Z" }, + { url = "https://files.pythonhosted.org/packages/3b/3b/e2d94cb613f6bbd5155a75cbe072813756363eba46a3f2177a1fcd0cd670/ruff-0.14.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e399341472ce15237be0c0ae5fbceca4b04cd9bebab1a2b2c979e015455d8f0c", size = 13929242, upload-time = "2026-01-15T20:15:11.918Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c5/abd840d4132fd51a12f594934af5eba1d5d27298a6f5b5d6c3be45301caf/ruff-0.14.13-py3-none-win32.whl", hash = "sha256:ef720f529aec113968b45dfdb838ac8934e519711da53a0456038a0efecbd680", size = 12919024, upload-time = "2026-01-15T20:14:43.647Z" }, + { url = "https://files.pythonhosted.org/packages/c2/55/6384b0b8ce731b6e2ade2b5449bf07c0e4c31e8a2e68ea65b3bafadcecc5/ruff-0.14.13-py3-none-win_amd64.whl", hash = "sha256:6070bd026e409734b9257e03e3ef18c6e1a216f0435c6751d7a8ec69cb59abef", size = 14097887, upload-time = "2026-01-15T20:15:01.48Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e1/7348090988095e4e39560cfc2f7555b1b2a7357deba19167b600fdf5215d/ruff-0.14.13-py3-none-win_arm64.whl", hash = "sha256:7ab819e14f1ad9fe39f246cfcc435880ef7a9390d81a2b6ac7e01039083dd247", size = 13080224, upload-time = "2026-01-15T20:14:45.853Z" }, ] [[package]] @@ -2427,6 +4123,265 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/48/f0/ae7ca09223a81a1d890b2557186ea015f6e0502e9b8cb8e1813f1d8cfa4e/s3transfer-0.14.0-py3-none-any.whl", hash = "sha256:ea3b790c7077558ed1f02a3072fb3cb992bbbd253392f4b6e9e8976941c7d456", size = 85712, upload-time = "2025-09-09T19:23:30.041Z" }, ] +[[package]] +name = "safetensors" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/9c/6e74567782559a63bd040a236edca26fd71bc7ba88de2ef35d75df3bca5e/safetensors-0.7.0.tar.gz", hash = "sha256:07663963b67e8bd9f0b8ad15bb9163606cd27cc5a1b96235a50d8369803b96b0", size = 200878, upload-time = "2025-11-19T15:18:43.199Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/47/aef6c06649039accf914afef490268e1067ed82be62bcfa5b7e886ad15e8/safetensors-0.7.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c82f4d474cf725255d9e6acf17252991c3c8aac038d6ef363a4bf8be2f6db517", size = 467781, upload-time = "2025-11-19T15:18:35.84Z" }, + { url = "https://files.pythonhosted.org/packages/e8/00/374c0c068e30cd31f1e1b46b4b5738168ec79e7689ca82ee93ddfea05109/safetensors-0.7.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:94fd4858284736bb67a897a41608b5b0c2496c9bdb3bf2af1fa3409127f20d57", size = 447058, upload-time = "2025-11-19T15:18:34.416Z" }, + { url = "https://files.pythonhosted.org/packages/f1/06/578ffed52c2296f93d7fd2d844cabfa92be51a587c38c8afbb8ae449ca89/safetensors-0.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e07d91d0c92a31200f25351f4acb2bc6aff7f48094e13ebb1d0fb995b54b6542", size = 491748, upload-time = "2025-11-19T15:18:09.79Z" }, + { url = "https://files.pythonhosted.org/packages/ae/33/1debbbb70e4791dde185edb9413d1fe01619255abb64b300157d7f15dddd/safetensors-0.7.0-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8469155f4cb518bafb4acf4865e8bb9d6804110d2d9bdcaa78564b9fd841e104", size = 503881, upload-time = "2025-11-19T15:18:16.145Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1c/40c2ca924d60792c3be509833df711b553c60effbd91da6f5284a83f7122/safetensors-0.7.0-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:54bef08bf00a2bff599982f6b08e8770e09cc012d7bba00783fc7ea38f1fb37d", size = 623463, upload-time = "2025-11-19T15:18:21.11Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3a/13784a9364bd43b0d61eef4bea2845039bc2030458b16594a1bd787ae26e/safetensors-0.7.0-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:42cb091236206bb2016d245c377ed383aa7f78691748f3bb6ee1bfa51ae2ce6a", size = 532855, upload-time = "2025-11-19T15:18:25.719Z" }, + { url = "https://files.pythonhosted.org/packages/a0/60/429e9b1cb3fc651937727befe258ea24122d9663e4d5709a48c9cbfceecb/safetensors-0.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac7252938f0696ddea46f5e855dd3138444e82236e3be475f54929f0c510d48", size = 507152, upload-time = "2025-11-19T15:18:33.023Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a8/4b45e4e059270d17af60359713ffd83f97900d45a6afa73aaa0d737d48b6/safetensors-0.7.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1d060c70284127fa805085d8f10fbd0962792aed71879d00864acda69dbab981", size = 541856, upload-time = "2025-11-19T15:18:31.075Z" }, + { url = "https://files.pythonhosted.org/packages/06/87/d26d8407c44175d8ae164a95b5a62707fcc445f3c0c56108e37d98070a3d/safetensors-0.7.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:cdab83a366799fa730f90a4ebb563e494f28e9e92c4819e556152ad55e43591b", size = 674060, upload-time = "2025-11-19T15:18:37.211Z" }, + { url = "https://files.pythonhosted.org/packages/11/f5/57644a2ff08dc6325816ba7217e5095f17269dada2554b658442c66aed51/safetensors-0.7.0-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:672132907fcad9f2aedcb705b2d7b3b93354a2aec1b2f706c4db852abe338f85", size = 771715, upload-time = "2025-11-19T15:18:38.689Z" }, + { url = "https://files.pythonhosted.org/packages/86/31/17883e13a814bd278ae6e266b13282a01049b0c81341da7fd0e3e71a80a3/safetensors-0.7.0-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:5d72abdb8a4d56d4020713724ba81dac065fedb7f3667151c4a637f1d3fb26c0", size = 714377, upload-time = "2025-11-19T15:18:40.162Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d8/0c8a7dc9b41dcac53c4cbf9df2b9c83e0e0097203de8b37a712b345c0be5/safetensors-0.7.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b0f6d66c1c538d5a94a73aa9ddca8ccc4227e6c9ff555322ea40bdd142391dd4", size = 677368, upload-time = "2025-11-19T15:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/05/e5/cb4b713c8a93469e3c5be7c3f8d77d307e65fe89673e731f5c2bfd0a9237/safetensors-0.7.0-cp38-abi3-win32.whl", hash = "sha256:c74af94bf3ac15ac4d0f2a7c7b4663a15f8c2ab15ed0fc7531ca61d0835eccba", size = 326423, upload-time = "2025-11-19T15:18:45.74Z" }, + { url = "https://files.pythonhosted.org/packages/5d/e6/ec8471c8072382cb91233ba7267fd931219753bb43814cbc71757bfd4dab/safetensors-0.7.0-cp38-abi3-win_amd64.whl", hash = "sha256:d1239932053f56f3456f32eb9625590cc7582e905021f94636202a864d470755", size = 341380, upload-time = "2025-11-19T15:18:44.427Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6a/4d08d89a6fcbe905c5ae68b8b34f0791850882fc19782d0d02c65abbdf3b/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4729811a6640d019a4b7ba8638ee2fd21fa5ca8c7e7bdf0fed62068fcaac737", size = 492430, upload-time = "2025-11-19T15:18:11.884Z" }, + { url = "https://files.pythonhosted.org/packages/dd/29/59ed8152b30f72c42d00d241e58eaca558ae9dbfa5695206e2e0f54c7063/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12f49080303fa6bb424b362149a12949dfbbf1e06811a88f2307276b0c131afd", size = 503977, upload-time = "2025-11-19T15:18:17.523Z" }, + { url = "https://files.pythonhosted.org/packages/d3/0b/4811bfec67fa260e791369b16dab105e4bae82686120554cc484064e22b4/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0071bffba4150c2f46cae1432d31995d77acfd9f8db598b5d1a2ce67e8440ad2", size = 623890, upload-time = "2025-11-19T15:18:22.666Z" }, + { url = "https://files.pythonhosted.org/packages/58/5b/632a58724221ef03d78ab65062e82a1010e1bef8e8e0b9d7c6d7b8044841/safetensors-0.7.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:473b32699f4200e69801bf5abf93f1a4ecd432a70984df164fc22ccf39c4a6f3", size = 531885, upload-time = "2025-11-19T15:18:27.146Z" }, +] + +[package.optional-dependencies] +torch = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "torch" }, +] + +[[package]] +name = "scipy" +version = "1.15.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload-time = "2025-05-08T16:04:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload-time = "2025-05-08T16:04:49.431Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload-time = "2025-05-08T16:04:55.215Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload-time = "2025-05-08T16:05:01.914Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload-time = "2025-05-08T16:05:08.166Z" }, + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, + { url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload-time = "2025-05-08T16:06:58.696Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload-time = "2025-05-08T16:07:04.209Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload-time = "2025-05-08T16:07:08.998Z" }, + { url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload-time = "2025-05-08T16:07:14.091Z" }, + { url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload-time = "2025-05-08T16:07:19.427Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload-time = "2025-05-08T16:07:25.712Z" }, + { url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload-time = "2025-05-08T16:07:31.468Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload-time = "2025-05-08T16:07:38.002Z" }, + { url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload-time = "2025-05-08T16:08:33.671Z" }, + { url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload-time = "2025-05-08T16:07:44.039Z" }, + { url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload-time = "2025-05-08T16:07:49.891Z" }, + { url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload-time = "2025-05-08T16:07:54.121Z" }, + { url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload-time = "2025-05-08T16:07:58.506Z" }, + { url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload-time = "2025-05-08T16:08:03.929Z" }, + { url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload-time = "2025-05-08T16:08:09.558Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload-time = "2025-05-08T16:08:15.34Z" }, + { url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload-time = "2025-05-08T16:08:21.513Z" }, + { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" }, +] + +[[package]] +name = "scipy" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.13'", + "python_full_version == '3.12.*'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/3e/9cca699f3486ce6bc12ff46dc2031f1ec8eb9ccc9a320fdaf925f1417426/scipy-1.17.0.tar.gz", hash = "sha256:2591060c8e648d8b96439e111ac41fd8342fdeff1876be2e19dea3fe8930454e", size = 30396830, upload-time = "2026-01-10T21:34:23.009Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/4b/c89c131aa87cad2b77a54eb0fb94d633a842420fa7e919dc2f922037c3d8/scipy-1.17.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:2abd71643797bd8a106dff97894ff7869eeeb0af0f7a5ce02e4227c6a2e9d6fd", size = 31381316, upload-time = "2026-01-10T21:24:33.42Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5f/a6b38f79a07d74989224d5f11b55267714707582908a5f1ae854cf9a9b84/scipy-1.17.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:ef28d815f4d2686503e5f4f00edc387ae58dfd7a2f42e348bb53359538f01558", size = 27966760, upload-time = "2026-01-10T21:24:38.911Z" }, + { url = "https://files.pythonhosted.org/packages/c1/20/095ad24e031ee8ed3c5975954d816b8e7e2abd731e04f8be573de8740885/scipy-1.17.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:272a9f16d6bb4667e8b50d25d71eddcc2158a214df1b566319298de0939d2ab7", size = 20138701, upload-time = "2026-01-10T21:24:43.249Z" }, + { url = "https://files.pythonhosted.org/packages/89/11/4aad2b3858d0337756f3323f8960755704e530b27eb2a94386c970c32cbe/scipy-1.17.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:7204fddcbec2fe6598f1c5fdf027e9f259106d05202a959a9f1aecf036adc9f6", size = 22480574, upload-time = "2026-01-10T21:24:47.266Z" }, + { url = "https://files.pythonhosted.org/packages/85/bd/f5af70c28c6da2227e510875cadf64879855193a687fb19951f0f44cfd6b/scipy-1.17.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fc02c37a5639ee67d8fb646ffded6d793c06c5622d36b35cfa8fe5ececb8f042", size = 32862414, upload-time = "2026-01-10T21:24:52.566Z" }, + { url = "https://files.pythonhosted.org/packages/ef/df/df1457c4df3826e908879fe3d76bc5b6e60aae45f4ee42539512438cfd5d/scipy-1.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dac97a27520d66c12a34fd90a4fe65f43766c18c0d6e1c0a80f114d2260080e4", size = 35112380, upload-time = "2026-01-10T21:24:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/5f/bb/88e2c16bd1dd4de19d80d7c5e238387182993c2fb13b4b8111e3927ad422/scipy-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ebb7446a39b3ae0fe8f416a9a3fdc6fba3f11c634f680f16a239c5187bc487c0", size = 34922676, upload-time = "2026-01-10T21:25:04.287Z" }, + { url = "https://files.pythonhosted.org/packages/02/ba/5120242cc735f71fc002cff0303d536af4405eb265f7c60742851e7ccfe9/scipy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:474da16199f6af66601a01546144922ce402cb17362e07d82f5a6cf8f963e449", size = 37507599, upload-time = "2026-01-10T21:25:09.851Z" }, + { url = "https://files.pythonhosted.org/packages/52/c8/08629657ac6c0da198487ce8cd3de78e02cfde42b7f34117d56a3fe249dc/scipy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:255c0da161bd7b32a6c898e7891509e8a9289f0b1c6c7d96142ee0d2b114c2ea", size = 36380284, upload-time = "2026-01-10T21:25:15.632Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4a/465f96d42c6f33ad324a40049dfd63269891db9324aa66c4a1c108c6f994/scipy-1.17.0-cp311-cp311-win_arm64.whl", hash = "sha256:85b0ac3ad17fa3be50abd7e69d583d98792d7edc08367e01445a1e2076005379", size = 24370427, upload-time = "2026-01-10T21:25:20.514Z" }, + { url = "https://files.pythonhosted.org/packages/0b/11/7241a63e73ba5a516f1930ac8d5b44cbbfabd35ac73a2d08ca206df007c4/scipy-1.17.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:0d5018a57c24cb1dd828bcf51d7b10e65986d549f52ef5adb6b4d1ded3e32a57", size = 31364580, upload-time = "2026-01-10T21:25:25.717Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1d/5057f812d4f6adc91a20a2d6f2ebcdb517fdbc87ae3acc5633c9b97c8ba5/scipy-1.17.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:88c22af9e5d5a4f9e027e26772cc7b5922fab8bcc839edb3ae33de404feebd9e", size = 27969012, upload-time = "2026-01-10T21:25:30.921Z" }, + { url = "https://files.pythonhosted.org/packages/e3/21/f6ec556c1e3b6ec4e088da667d9987bb77cc3ab3026511f427dc8451187d/scipy-1.17.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f3cd947f20fe17013d401b64e857c6b2da83cae567adbb75b9dcba865abc66d8", size = 20140691, upload-time = "2026-01-10T21:25:34.802Z" }, + { url = "https://files.pythonhosted.org/packages/7a/fe/5e5ad04784964ba964a96f16c8d4676aa1b51357199014dce58ab7ec5670/scipy-1.17.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e8c0b331c2c1f531eb51f1b4fc9ba709521a712cce58f1aa627bc007421a5306", size = 22463015, upload-time = "2026-01-10T21:25:39.277Z" }, + { url = "https://files.pythonhosted.org/packages/4a/69/7c347e857224fcaf32a34a05183b9d8a7aca25f8f2d10b8a698b8388561a/scipy-1.17.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5194c445d0a1c7a6c1a4a4681b6b7c71baad98ff66d96b949097e7513c9d6742", size = 32724197, upload-time = "2026-01-10T21:25:44.084Z" }, + { url = "https://files.pythonhosted.org/packages/d1/fe/66d73b76d378ba8cc2fe605920c0c75092e3a65ae746e1e767d9d020a75a/scipy-1.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9eeb9b5f5997f75507814ed9d298ab23f62cf79f5a3ef90031b1ee2506abdb5b", size = 35009148, upload-time = "2026-01-10T21:25:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/af/07/07dec27d9dc41c18d8c43c69e9e413431d20c53a0339c388bcf72f353c4b/scipy-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:40052543f7bbe921df4408f46003d6f01c6af109b9e2c8a66dd1cf6cf57f7d5d", size = 34798766, upload-time = "2026-01-10T21:25:59.41Z" }, + { url = "https://files.pythonhosted.org/packages/81/61/0470810c8a093cdacd4ba7504b8a218fd49ca070d79eca23a615f5d9a0b0/scipy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0cf46c8013fec9d3694dc572f0b54100c28405d55d3e2cb15e2895b25057996e", size = 37405953, upload-time = "2026-01-10T21:26:07.75Z" }, + { url = "https://files.pythonhosted.org/packages/92/ce/672ed546f96d5d41ae78c4b9b02006cedd0b3d6f2bf5bb76ea455c320c28/scipy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:0937a0b0d8d593a198cededd4c439a0ea216a3f36653901ea1f3e4be949056f8", size = 36328121, upload-time = "2026-01-10T21:26:16.509Z" }, + { url = "https://files.pythonhosted.org/packages/9d/21/38165845392cae67b61843a52c6455d47d0cc2a40dd495c89f4362944654/scipy-1.17.0-cp312-cp312-win_arm64.whl", hash = "sha256:f603d8a5518c7426414d1d8f82e253e454471de682ce5e39c29adb0df1efb86b", size = 24314368, upload-time = "2026-01-10T21:26:23.087Z" }, + { url = "https://files.pythonhosted.org/packages/0c/51/3468fdfd49387ddefee1636f5cf6d03ce603b75205bf439bbf0e62069bfd/scipy-1.17.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:65ec32f3d32dfc48c72df4291345dae4f048749bc8d5203ee0a3f347f96c5ce6", size = 31344101, upload-time = "2026-01-10T21:26:30.25Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9a/9406aec58268d437636069419e6977af953d1e246df941d42d3720b7277b/scipy-1.17.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:1f9586a58039d7229ce77b52f8472c972448cded5736eaf102d5658bbac4c269", size = 27950385, upload-time = "2026-01-10T21:26:36.801Z" }, + { url = "https://files.pythonhosted.org/packages/4f/98/e7342709e17afdfd1b26b56ae499ef4939b45a23a00e471dfb5375eea205/scipy-1.17.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9fad7d3578c877d606b1150135c2639e9de9cecd3705caa37b66862977cc3e72", size = 20122115, upload-time = "2026-01-10T21:26:42.107Z" }, + { url = "https://files.pythonhosted.org/packages/fd/0e/9eeeb5357a64fd157cbe0302c213517c541cc16b8486d82de251f3c68ede/scipy-1.17.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:423ca1f6584fc03936972b5f7c06961670dbba9f234e71676a7c7ccf938a0d61", size = 22442402, upload-time = "2026-01-10T21:26:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c9/10/be13397a0e434f98e0c79552b2b584ae5bb1c8b2be95db421533bbca5369/scipy-1.17.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe508b5690e9eaaa9467fc047f833af58f1152ae51a0d0aed67aa5801f4dd7d6", size = 32696338, upload-time = "2026-01-10T21:26:55.521Z" }, + { url = "https://files.pythonhosted.org/packages/63/1e/12fbf2a3bb240161651c94bb5cdd0eae5d4e8cc6eaeceb74ab07b12a753d/scipy-1.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6680f2dfd4f6182e7d6db161344537da644d1cf85cf293f015c60a17ecf08752", size = 34977201, upload-time = "2026-01-10T21:27:03.501Z" }, + { url = "https://files.pythonhosted.org/packages/19/5b/1a63923e23ccd20bd32156d7dd708af5bbde410daa993aa2500c847ab2d2/scipy-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eec3842ec9ac9de5917899b277428886042a93db0b227ebbe3a333b64ec7643d", size = 34777384, upload-time = "2026-01-10T21:27:11.423Z" }, + { url = "https://files.pythonhosted.org/packages/39/22/b5da95d74edcf81e540e467202a988c50fef41bd2011f46e05f72ba07df6/scipy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d7425fcafbc09a03731e1bc05581f5fad988e48c6a861f441b7ab729a49a55ea", size = 37379586, upload-time = "2026-01-10T21:27:20.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/b6/8ac583d6da79e7b9e520579f03007cb006f063642afd6b2eeb16b890bf93/scipy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:87b411e42b425b84777718cc41516b8a7e0795abfa8e8e1d573bf0ef014f0812", size = 36287211, upload-time = "2026-01-10T21:28:43.122Z" }, + { url = "https://files.pythonhosted.org/packages/55/fb/7db19e0b3e52f882b420417644ec81dd57eeef1bd1705b6f689d8ff93541/scipy-1.17.0-cp313-cp313-win_arm64.whl", hash = "sha256:357ca001c6e37601066092e7c89cca2f1ce74e2a520ca78d063a6d2201101df2", size = 24312646, upload-time = "2026-01-10T21:28:49.893Z" }, + { url = "https://files.pythonhosted.org/packages/20/b6/7feaa252c21cc7aff335c6c55e1b90ab3e3306da3f048109b8b639b94648/scipy-1.17.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:ec0827aa4d36cb79ff1b81de898e948a51ac0b9b1c43e4a372c0508c38c0f9a3", size = 31693194, upload-time = "2026-01-10T21:27:27.454Z" }, + { url = "https://files.pythonhosted.org/packages/76/bb/bbb392005abce039fb7e672cb78ac7d158700e826b0515cab6b5b60c26fb/scipy-1.17.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:819fc26862b4b3c73a60d486dbb919202f3d6d98c87cf20c223511429f2d1a97", size = 28365415, upload-time = "2026-01-10T21:27:34.26Z" }, + { url = "https://files.pythonhosted.org/packages/37/da/9d33196ecc99fba16a409c691ed464a3a283ac454a34a13a3a57c0d66f3a/scipy-1.17.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:363ad4ae2853d88ebcde3ae6ec46ccca903ea9835ee8ba543f12f575e7b07e4e", size = 20537232, upload-time = "2026-01-10T21:27:40.306Z" }, + { url = "https://files.pythonhosted.org/packages/56/9d/f4b184f6ddb28e9a5caea36a6f98e8ecd2a524f9127354087ce780885d83/scipy-1.17.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:979c3a0ff8e5ba254d45d59ebd38cde48fce4f10b5125c680c7a4bfe177aab07", size = 22791051, upload-time = "2026-01-10T21:27:46.539Z" }, + { url = "https://files.pythonhosted.org/packages/9b/9d/025cccdd738a72140efc582b1641d0dd4caf2e86c3fb127568dc80444e6e/scipy-1.17.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:130d12926ae34399d157de777472bf82e9061c60cc081372b3118edacafe1d00", size = 32815098, upload-time = "2026-01-10T21:27:54.389Z" }, + { url = "https://files.pythonhosted.org/packages/48/5f/09b879619f8bca15ce392bfc1894bd9c54377e01d1b3f2f3b595a1b4d945/scipy-1.17.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e886000eb4919eae3a44f035e63f0fd8b651234117e8f6f29bad1cd26e7bc45", size = 35031342, upload-time = "2026-01-10T21:28:03.012Z" }, + { url = "https://files.pythonhosted.org/packages/f2/9a/f0f0a9f0aa079d2f106555b984ff0fbb11a837df280f04f71f056ea9c6e4/scipy-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:13c4096ac6bc31d706018f06a49abe0485f96499deb82066b94d19b02f664209", size = 34893199, upload-time = "2026-01-10T21:28:10.832Z" }, + { url = "https://files.pythonhosted.org/packages/90/b8/4f0f5cf0c5ea4d7548424e6533e6b17d164f34a6e2fb2e43ffebb6697b06/scipy-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cacbaddd91fcffde703934897c5cd2c7cb0371fac195d383f4e1f1c5d3f3bd04", size = 37438061, upload-time = "2026-01-10T21:28:19.684Z" }, + { url = "https://files.pythonhosted.org/packages/f9/cc/2bd59140ed3b2fa2882fb15da0a9cb1b5a6443d67cfd0d98d4cec83a57ec/scipy-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:edce1a1cf66298cccdc48a1bdf8fb10a3bf58e8b58d6c3883dd1530e103f87c0", size = 36328593, upload-time = "2026-01-10T21:28:28.007Z" }, + { url = "https://files.pythonhosted.org/packages/13/1b/c87cc44a0d2c7aaf0f003aef2904c3d097b422a96c7e7c07f5efd9073c1b/scipy-1.17.0-cp313-cp313t-win_arm64.whl", hash = "sha256:30509da9dbec1c2ed8f168b8d8aa853bc6723fede1dbc23c7d43a56f5ab72a67", size = 24625083, upload-time = "2026-01-10T21:28:35.188Z" }, + { url = "https://files.pythonhosted.org/packages/1a/2d/51006cd369b8e7879e1c630999a19d1fbf6f8b5ed3e33374f29dc87e53b3/scipy-1.17.0-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:c17514d11b78be8f7e6331b983a65a7f5ca1fd037b95e27b280921fe5606286a", size = 31346803, upload-time = "2026-01-10T21:28:57.24Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2e/2349458c3ce445f53a6c93d4386b1c4c5c0c540917304c01222ff95ff317/scipy-1.17.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:4e00562e519c09da34c31685f6acc3aa384d4d50604db0f245c14e1b4488bfa2", size = 27967182, upload-time = "2026-01-10T21:29:04.107Z" }, + { url = "https://files.pythonhosted.org/packages/5e/7c/df525fbfa77b878d1cfe625249529514dc02f4fd5f45f0f6295676a76528/scipy-1.17.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f7df7941d71314e60a481e02d5ebcb3f0185b8d799c70d03d8258f6c80f3d467", size = 20139125, upload-time = "2026-01-10T21:29:10.179Z" }, + { url = "https://files.pythonhosted.org/packages/33/11/fcf9d43a7ed1234d31765ec643b0515a85a30b58eddccc5d5a4d12b5f194/scipy-1.17.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:aabf057c632798832f071a8dde013c2e26284043934f53b00489f1773b33527e", size = 22443554, upload-time = "2026-01-10T21:29:15.888Z" }, + { url = "https://files.pythonhosted.org/packages/80/5c/ea5d239cda2dd3d31399424967a24d556cf409fbea7b5b21412b0fd0a44f/scipy-1.17.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a38c3337e00be6fd8a95b4ed66b5d988bac4ec888fd922c2ea9fe5fb1603dd67", size = 32757834, upload-time = "2026-01-10T21:29:23.406Z" }, + { url = "https://files.pythonhosted.org/packages/b8/7e/8c917cc573310e5dc91cbeead76f1b600d3fb17cf0969db02c9cf92e3cfa/scipy-1.17.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00fb5f8ec8398ad90215008d8b6009c9db9fa924fd4c7d6be307c6f945f9cd73", size = 34995775, upload-time = "2026-01-10T21:29:31.915Z" }, + { url = "https://files.pythonhosted.org/packages/c5/43/176c0c3c07b3f7df324e7cdd933d3e2c4898ca202b090bd5ba122f9fe270/scipy-1.17.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f2a4942b0f5f7c23c7cd641a0ca1955e2ae83dedcff537e3a0259096635e186b", size = 34841240, upload-time = "2026-01-10T21:29:39.995Z" }, + { url = "https://files.pythonhosted.org/packages/44/8c/d1f5f4b491160592e7f084d997de53a8e896a3ac01cd07e59f43ca222744/scipy-1.17.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:dbf133ced83889583156566d2bdf7a07ff89228fe0c0cb727f777de92092ec6b", size = 37394463, upload-time = "2026-01-10T21:29:48.723Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ec/42a6657f8d2d087e750e9a5dde0b481fd135657f09eaf1cf5688bb23c338/scipy-1.17.0-cp314-cp314-win_amd64.whl", hash = "sha256:3625c631a7acd7cfd929e4e31d2582cf00f42fcf06011f59281271746d77e061", size = 37053015, upload-time = "2026-01-10T21:30:51.418Z" }, + { url = "https://files.pythonhosted.org/packages/27/58/6b89a6afd132787d89a362d443a7bddd511b8f41336a1ae47f9e4f000dc4/scipy-1.17.0-cp314-cp314-win_arm64.whl", hash = "sha256:9244608d27eafe02b20558523ba57f15c689357c85bdcfe920b1828750aa26eb", size = 24951312, upload-time = "2026-01-10T21:30:56.771Z" }, + { url = "https://files.pythonhosted.org/packages/e9/01/f58916b9d9ae0112b86d7c3b10b9e685625ce6e8248df139d0fcb17f7397/scipy-1.17.0-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:2b531f57e09c946f56ad0b4a3b2abee778789097871fc541e267d2eca081cff1", size = 31706502, upload-time = "2026-01-10T21:29:56.326Z" }, + { url = "https://files.pythonhosted.org/packages/59/8e/2912a87f94a7d1f8b38aabc0faf74b82d3b6c9e22be991c49979f0eceed8/scipy-1.17.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:13e861634a2c480bd237deb69333ac79ea1941b94568d4b0efa5db5e263d4fd1", size = 28380854, upload-time = "2026-01-10T21:30:01.554Z" }, + { url = "https://files.pythonhosted.org/packages/bd/1c/874137a52dddab7d5d595c1887089a2125d27d0601fce8c0026a24a92a0b/scipy-1.17.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:eb2651271135154aa24f6481cbae5cc8af1f0dd46e6533fb7b56aa9727b6a232", size = 20552752, upload-time = "2026-01-10T21:30:05.93Z" }, + { url = "https://files.pythonhosted.org/packages/3f/f0/7518d171cb735f6400f4576cf70f756d5b419a07fe1867da34e2c2c9c11b/scipy-1.17.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:c5e8647f60679790c2f5c76be17e2e9247dc6b98ad0d3b065861e082c56e078d", size = 22803972, upload-time = "2026-01-10T21:30:10.651Z" }, + { url = "https://files.pythonhosted.org/packages/7c/74/3498563a2c619e8a3ebb4d75457486c249b19b5b04a30600dfd9af06bea5/scipy-1.17.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5fb10d17e649e1446410895639f3385fd2bf4c3c7dfc9bea937bddcbc3d7b9ba", size = 32829770, upload-time = "2026-01-10T21:30:16.359Z" }, + { url = "https://files.pythonhosted.org/packages/48/d1/7b50cedd8c6c9d6f706b4b36fa8544d829c712a75e370f763b318e9638c1/scipy-1.17.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8547e7c57f932e7354a2319fab613981cde910631979f74c9b542bb167a8b9db", size = 35051093, upload-time = "2026-01-10T21:30:22.987Z" }, + { url = "https://files.pythonhosted.org/packages/e2/82/a2d684dfddb87ba1b3ea325df7c3293496ee9accb3a19abe9429bce94755/scipy-1.17.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33af70d040e8af9d5e7a38b5ed3b772adddd281e3062ff23fec49e49681c38cf", size = 34909905, upload-time = "2026-01-10T21:30:28.704Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5e/e565bd73991d42023eb82bb99e51c5b3d9e2c588ca9d4b3e2cc1d3ca62a6/scipy-1.17.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb55bb97d00f8b7ab95cb64f873eb0bf54d9446264d9f3609130381233483f", size = 37457743, upload-time = "2026-01-10T21:30:34.819Z" }, + { url = "https://files.pythonhosted.org/packages/58/a8/a66a75c3d8f1fb2b83f66007d6455a06a6f6cf5618c3dc35bc9b69dd096e/scipy-1.17.0-cp314-cp314t-win_amd64.whl", hash = "sha256:1ff269abf702f6c7e67a4b7aad981d42871a11b9dd83c58d2d2ea624efbd1088", size = 37098574, upload-time = "2026-01-10T21:30:40.782Z" }, + { url = "https://files.pythonhosted.org/packages/56/a5/df8f46ef7da168f1bc52cd86e09a9de5c6f19cc1da04454d51b7d4f43408/scipy-1.17.0-cp314-cp314t-win_arm64.whl", hash = "sha256:031121914e295d9791319a1875444d55079885bbae5bdc9c5e0f2ee5f09d34ff", size = 25246266, upload-time = "2026-01-10T21:30:45.923Z" }, +] + +[[package]] +name = "semchunk" +version = "2.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpire", extra = ["dill"] }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/96/c418c322730b385e81d4ab462e68dd48bb2dbda4d8efa17cad2ca468d9ac/semchunk-2.2.2.tar.gz", hash = "sha256:940e89896e64eeb01de97ba60f51c8c7b96c6a3951dfcf574f25ce2146752f52", size = 12271, upload-time = "2024-12-17T22:54:30.332Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/84/94ca7896c7df20032bcb09973e9a4d14c222507c0aadf22e89fa76bb0a04/semchunk-2.2.2-py3-none-any.whl", hash = "sha256:94ca19020c013c073abdfd06d79a7c13637b91738335f3b8cdb5655ee7cc94d2", size = 10271, upload-time = "2024-12-17T22:54:27.689Z" }, +] + +[[package]] +name = "setuptools" +version = "80.10.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/86/ff/f75651350db3cf2ef767371307eb163f3cc1ac03e16fdf3ac347607f7edb/setuptools-80.10.1.tar.gz", hash = "sha256:bf2e513eb8144c3298a3bd28ab1a5edb739131ec5c22e045ff93cd7f5319703a", size = 1229650, upload-time = "2026-01-21T09:42:03.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/76/f963c61683a39084aa575f98089253e1e852a4417cb8a3a8a422923a5246/setuptools-80.10.1-py3-none-any.whl", hash = "sha256:fc30c51cbcb8199a219c12cc9c281b5925a4978d212f84229c909636d9f6984e", size = 1099859, upload-time = "2026-01-21T09:42:00.688Z" }, +] + +[[package]] +name = "shapely" +version = "2.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/bc/0989043118a27cccb4e906a46b7565ce36ca7b57f5a18b78f4f1b0f72d9d/shapely-2.1.2.tar.gz", hash = "sha256:2ed4ecb28320a433db18a5bf029986aa8afcfd740745e78847e330d5d94922a9", size = 315489, upload-time = "2025-09-24T13:51:41.432Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/89/c3548aa9b9812a5d143986764dededfa48d817714e947398bdda87c77a72/shapely-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7ae48c236c0324b4e139bea88a306a04ca630f49be66741b340729d380d8f52f", size = 1825959, upload-time = "2025-09-24T13:50:00.682Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8a/7ebc947080442edd614ceebe0ce2cdbd00c25e832c240e1d1de61d0e6b38/shapely-2.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eba6710407f1daa8e7602c347dfc94adc02205ec27ed956346190d66579eb9ea", size = 1629196, upload-time = "2025-09-24T13:50:03.447Z" }, + { url = "https://files.pythonhosted.org/packages/c8/86/c9c27881c20d00fc409e7e059de569d5ed0abfcec9c49548b124ebddea51/shapely-2.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef4a456cc8b7b3d50ccec29642aa4aeda959e9da2fe9540a92754770d5f0cf1f", size = 2951065, upload-time = "2025-09-24T13:50:05.266Z" }, + { url = "https://files.pythonhosted.org/packages/50/8a/0ab1f7433a2a85d9e9aea5b1fbb333f3b09b309e7817309250b4b7b2cc7a/shapely-2.1.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e38a190442aacc67ff9f75ce60aec04893041f16f97d242209106d502486a142", size = 3058666, upload-time = "2025-09-24T13:50:06.872Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c6/5a30ffac9c4f3ffd5b7113a7f5299ccec4713acd5ee44039778a7698224e/shapely-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:40d784101f5d06a1fd30b55fc11ea58a61be23f930d934d86f19a180909908a4", size = 3966905, upload-time = "2025-09-24T13:50:09.417Z" }, + { url = "https://files.pythonhosted.org/packages/9c/72/e92f3035ba43e53959007f928315a68fbcf2eeb4e5ededb6f0dc7ff1ecc3/shapely-2.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f6f6cd5819c50d9bcf921882784586aab34a4bd53e7553e175dece6db513a6f0", size = 4129260, upload-time = "2025-09-24T13:50:11.183Z" }, + { url = "https://files.pythonhosted.org/packages/42/24/605901b73a3d9f65fa958e63c9211f4be23d584da8a1a7487382fac7fdc5/shapely-2.1.2-cp310-cp310-win32.whl", hash = "sha256:fe9627c39c59e553c90f5bc3128252cb85dc3b3be8189710666d2f8bc3a5503e", size = 1544301, upload-time = "2025-09-24T13:50:12.521Z" }, + { url = "https://files.pythonhosted.org/packages/e1/89/6db795b8dd3919851856bd2ddd13ce434a748072f6fdee42ff30cbd3afa3/shapely-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:1d0bfb4b8f661b3b4ec3565fa36c340bfb1cda82087199711f86a88647d26b2f", size = 1722074, upload-time = "2025-09-24T13:50:13.909Z" }, + { url = "https://files.pythonhosted.org/packages/8f/8d/1ff672dea9ec6a7b5d422eb6d095ed886e2e523733329f75fdcb14ee1149/shapely-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:91121757b0a36c9aac3427a651a7e6567110a4a67c97edf04f8d55d4765f6618", size = 1820038, upload-time = "2025-09-24T13:50:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/4f/ce/28fab8c772ce5db23a0d86bf0adaee0c4c79d5ad1db766055fa3dab442e2/shapely-2.1.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16a9c722ba774cf50b5d4541242b4cce05aafd44a015290c82ba8a16931ff63d", size = 1626039, upload-time = "2025-09-24T13:50:16.881Z" }, + { url = "https://files.pythonhosted.org/packages/70/8b/868b7e3f4982f5006e9395c1e12343c66a8155c0374fdc07c0e6a1ab547d/shapely-2.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cc4f7397459b12c0b196c9efe1f9d7e92463cbba142632b4cc6d8bbbbd3e2b09", size = 3001519, upload-time = "2025-09-24T13:50:18.606Z" }, + { url = "https://files.pythonhosted.org/packages/13/02/58b0b8d9c17c93ab6340edd8b7308c0c5a5b81f94ce65705819b7416dba5/shapely-2.1.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:136ab87b17e733e22f0961504d05e77e7be8c9b5a8184f685b4a91a84efe3c26", size = 3110842, upload-time = "2025-09-24T13:50:21.77Z" }, + { url = "https://files.pythonhosted.org/packages/af/61/8e389c97994d5f331dcffb25e2fa761aeedfb52b3ad9bcdd7b8671f4810a/shapely-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:16c5d0fc45d3aa0a69074979f4f1928ca2734fb2e0dde8af9611e134e46774e7", size = 4021316, upload-time = "2025-09-24T13:50:23.626Z" }, + { url = "https://files.pythonhosted.org/packages/d3/d4/9b2a9fe6039f9e42ccf2cb3e84f219fd8364b0c3b8e7bbc857b5fbe9c14c/shapely-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6ddc759f72b5b2b0f54a7e7cde44acef680a55019eb52ac63a7af2cf17cb9cd2", size = 4178586, upload-time = "2025-09-24T13:50:25.443Z" }, + { url = "https://files.pythonhosted.org/packages/16/f6/9840f6963ed4decf76b08fd6d7fed14f8779fb7a62cb45c5617fa8ac6eab/shapely-2.1.2-cp311-cp311-win32.whl", hash = "sha256:2fa78b49485391224755a856ed3b3bd91c8455f6121fee0db0e71cefb07d0ef6", size = 1543961, upload-time = "2025-09-24T13:50:26.968Z" }, + { url = "https://files.pythonhosted.org/packages/38/1e/3f8ea46353c2a33c1669eb7327f9665103aa3a8dfe7f2e4ef714c210b2c2/shapely-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:c64d5c97b2f47e3cd9b712eaced3b061f2b71234b3fc263e0fcf7d889c6559dc", size = 1722856, upload-time = "2025-09-24T13:50:28.497Z" }, + { url = "https://files.pythonhosted.org/packages/24/c0/f3b6453cf2dfa99adc0ba6675f9aaff9e526d2224cbd7ff9c1a879238693/shapely-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fe2533caae6a91a543dec62e8360fe86ffcdc42a7c55f9dfd0128a977a896b94", size = 1833550, upload-time = "2025-09-24T13:50:30.019Z" }, + { url = "https://files.pythonhosted.org/packages/86/07/59dee0bc4b913b7ab59ab1086225baca5b8f19865e6101db9ebb7243e132/shapely-2.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ba4d1333cc0bc94381d6d4308d2e4e008e0bd128bdcff5573199742ee3634359", size = 1643556, upload-time = "2025-09-24T13:50:32.291Z" }, + { url = "https://files.pythonhosted.org/packages/26/29/a5397e75b435b9895cd53e165083faed5d12fd9626eadec15a83a2411f0f/shapely-2.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0bd308103340030feef6c111d3eb98d50dc13feea33affc8a6f9fa549e9458a3", size = 2988308, upload-time = "2025-09-24T13:50:33.862Z" }, + { url = "https://files.pythonhosted.org/packages/b9/37/e781683abac55dde9771e086b790e554811a71ed0b2b8a1e789b7430dd44/shapely-2.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1e7d4d7ad262a48bb44277ca12c7c78cb1b0f56b32c10734ec9a1d30c0b0c54b", size = 3099844, upload-time = "2025-09-24T13:50:35.459Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f3/9876b64d4a5a321b9dc482c92bb6f061f2fa42131cba643c699f39317cb9/shapely-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e9eddfe513096a71896441a7c37db72da0687b34752c4e193577a145c71736fc", size = 3988842, upload-time = "2025-09-24T13:50:37.478Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a0/704c7292f7014c7e74ec84eddb7b109e1fbae74a16deae9c1504b1d15565/shapely-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:980c777c612514c0cf99bc8a9de6d286f5e186dcaf9091252fcd444e5638193d", size = 4152714, upload-time = "2025-09-24T13:50:39.9Z" }, + { url = "https://files.pythonhosted.org/packages/53/46/319c9dc788884ad0785242543cdffac0e6530e4d0deb6c4862bc4143dcf3/shapely-2.1.2-cp312-cp312-win32.whl", hash = "sha256:9111274b88e4d7b54a95218e243282709b330ef52b7b86bc6aaf4f805306f454", size = 1542745, upload-time = "2025-09-24T13:50:41.414Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bf/cb6c1c505cb31e818e900b9312d514f381fbfa5c4363edfce0fcc4f8c1a4/shapely-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:743044b4cfb34f9a67205cee9279feaf60ba7d02e69febc2afc609047cb49179", size = 1722861, upload-time = "2025-09-24T13:50:43.35Z" }, + { url = "https://files.pythonhosted.org/packages/c3/90/98ef257c23c46425dc4d1d31005ad7c8d649fe423a38b917db02c30f1f5a/shapely-2.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b510dda1a3672d6879beb319bc7c5fd302c6c354584690973c838f46ec3e0fa8", size = 1832644, upload-time = "2025-09-24T13:50:44.886Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ab/0bee5a830d209adcd3a01f2d4b70e587cdd9fd7380d5198c064091005af8/shapely-2.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cff473e81017594d20ec55d86b54bc635544897e13a7cfc12e36909c5309a2a", size = 1642887, upload-time = "2025-09-24T13:50:46.735Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5e/7d7f54ba960c13302584c73704d8c4d15404a51024631adb60b126a4ae88/shapely-2.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe7b77dc63d707c09726b7908f575fc04ff1d1ad0f3fb92aec212396bc6cfe5e", size = 2970931, upload-time = "2025-09-24T13:50:48.374Z" }, + { url = "https://files.pythonhosted.org/packages/f2/a2/83fc37e2a58090e3d2ff79175a95493c664bcd0b653dd75cb9134645a4e5/shapely-2.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ed1a5bbfb386ee8332713bf7508bc24e32d24b74fc9a7b9f8529a55db9f4ee6", size = 3082855, upload-time = "2025-09-24T13:50:50.037Z" }, + { url = "https://files.pythonhosted.org/packages/44/2b/578faf235a5b09f16b5f02833c53822294d7f21b242f8e2d0cf03fb64321/shapely-2.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a84e0582858d841d54355246ddfcbd1fce3179f185da7470f41ce39d001ee1af", size = 3979960, upload-time = "2025-09-24T13:50:51.74Z" }, + { url = "https://files.pythonhosted.org/packages/4d/04/167f096386120f692cc4ca02f75a17b961858997a95e67a3cb6a7bbd6b53/shapely-2.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc3487447a43d42adcdf52d7ac73804f2312cbfa5d433a7d2c506dcab0033dfd", size = 4142851, upload-time = "2025-09-24T13:50:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/48/74/fb402c5a6235d1c65a97348b48cdedb75fb19eca2b1d66d04969fc1c6091/shapely-2.1.2-cp313-cp313-win32.whl", hash = "sha256:9c3a3c648aedc9f99c09263b39f2d8252f199cb3ac154fadc173283d7d111350", size = 1541890, upload-time = "2025-09-24T13:50:55.337Z" }, + { url = "https://files.pythonhosted.org/packages/41/47/3647fe7ad990af60ad98b889657a976042c9988c2807cf322a9d6685f462/shapely-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:ca2591bff6645c216695bdf1614fca9c82ea1144d4a7591a466fef64f28f0715", size = 1722151, upload-time = "2025-09-24T13:50:57.153Z" }, + { url = "https://files.pythonhosted.org/packages/3c/49/63953754faa51ffe7d8189bfbe9ca34def29f8c0e34c67cbe2a2795f269d/shapely-2.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2d93d23bdd2ed9dc157b46bc2f19b7da143ca8714464249bef6771c679d5ff40", size = 1834130, upload-time = "2025-09-24T13:50:58.49Z" }, + { url = "https://files.pythonhosted.org/packages/7f/ee/dce001c1984052970ff60eb4727164892fb2d08052c575042a47f5a9e88f/shapely-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01d0d304b25634d60bd7cf291828119ab55a3bab87dc4af1e44b07fb225f188b", size = 1642802, upload-time = "2025-09-24T13:50:59.871Z" }, + { url = "https://files.pythonhosted.org/packages/da/e7/fc4e9a19929522877fa602f705706b96e78376afb7fad09cad5b9af1553c/shapely-2.1.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8d8382dd120d64b03698b7298b89611a6ea6f55ada9d39942838b79c9bc89801", size = 3018460, upload-time = "2025-09-24T13:51:02.08Z" }, + { url = "https://files.pythonhosted.org/packages/a1/18/7519a25db21847b525696883ddc8e6a0ecaa36159ea88e0fef11466384d0/shapely-2.1.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19efa3611eef966e776183e338b2d7ea43569ae99ab34f8d17c2c054d3205cc0", size = 3095223, upload-time = "2025-09-24T13:51:04.472Z" }, + { url = "https://files.pythonhosted.org/packages/48/de/b59a620b1f3a129c3fecc2737104a0a7e04e79335bd3b0a1f1609744cf17/shapely-2.1.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:346ec0c1a0fcd32f57f00e4134d1200e14bf3f5ae12af87ba83ca275c502498c", size = 4030760, upload-time = "2025-09-24T13:51:06.455Z" }, + { url = "https://files.pythonhosted.org/packages/96/b3/c6655ee7232b417562bae192ae0d3ceaadb1cc0ffc2088a2ddf415456cc2/shapely-2.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6305993a35989391bd3476ee538a5c9a845861462327efe00dd11a5c8c709a99", size = 4170078, upload-time = "2025-09-24T13:51:08.584Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/605c76808d73503c9333af8f6cbe7e1354d2d238bda5f88eea36bfe0f42a/shapely-2.1.2-cp313-cp313t-win32.whl", hash = "sha256:c8876673449f3401f278c86eb33224c5764582f72b653a415d0e6672fde887bf", size = 1559178, upload-time = "2025-09-24T13:51:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/36/f7/d317eb232352a1f1444d11002d477e54514a4a6045536d49d0c59783c0da/shapely-2.1.2-cp313-cp313t-win_amd64.whl", hash = "sha256:4a44bc62a10d84c11a7a3d7c1c4fe857f7477c3506e24c9062da0db0ae0c449c", size = 1739756, upload-time = "2025-09-24T13:51:12.105Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c4/3ce4c2d9b6aabd27d26ec988f08cb877ba9e6e96086eff81bfea93e688c7/shapely-2.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:9a522f460d28e2bf4e12396240a5fc1518788b2fcd73535166d748399ef0c223", size = 1831290, upload-time = "2025-09-24T13:51:13.56Z" }, + { url = "https://files.pythonhosted.org/packages/17/b9/f6ab8918fc15429f79cb04afa9f9913546212d7fb5e5196132a2af46676b/shapely-2.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1ff629e00818033b8d71139565527ced7d776c269a49bd78c9df84e8f852190c", size = 1641463, upload-time = "2025-09-24T13:51:14.972Z" }, + { url = "https://files.pythonhosted.org/packages/a5/57/91d59ae525ca641e7ac5551c04c9503aee6f29b92b392f31790fcb1a4358/shapely-2.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f67b34271dedc3c653eba4e3d7111aa421d5be9b4c4c7d38d30907f796cb30df", size = 2970145, upload-time = "2025-09-24T13:51:16.961Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cb/4948be52ee1da6927831ab59e10d4c29baa2a714f599f1f0d1bc747f5777/shapely-2.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21952dc00df38a2c28375659b07a3979d22641aeb104751e769c3ee825aadecf", size = 3073806, upload-time = "2025-09-24T13:51:18.712Z" }, + { url = "https://files.pythonhosted.org/packages/03/83/f768a54af775eb41ef2e7bec8a0a0dbe7d2431c3e78c0a8bdba7ab17e446/shapely-2.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1f2f33f486777456586948e333a56ae21f35ae273be99255a191f5c1fa302eb4", size = 3980803, upload-time = "2025-09-24T13:51:20.37Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/559c7c195807c91c79d38a1f6901384a2878a76fbdf3f1048893a9b7534d/shapely-2.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cf831a13e0d5a7eb519e96f58ec26e049b1fad411fc6fc23b162a7ce04d9cffc", size = 4133301, upload-time = "2025-09-24T13:51:21.887Z" }, + { url = "https://files.pythonhosted.org/packages/80/cd/60d5ae203241c53ef3abd2ef27c6800e21afd6c94e39db5315ea0cbafb4a/shapely-2.1.2-cp314-cp314-win32.whl", hash = "sha256:61edcd8d0d17dd99075d320a1dd39c0cb9616f7572f10ef91b4b5b00c4aeb566", size = 1583247, upload-time = "2025-09-24T13:51:23.401Z" }, + { url = "https://files.pythonhosted.org/packages/74/d4/135684f342e909330e50d31d441ace06bf83c7dc0777e11043f99167b123/shapely-2.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:a444e7afccdb0999e203b976adb37ea633725333e5b119ad40b1ca291ecf311c", size = 1773019, upload-time = "2025-09-24T13:51:24.873Z" }, + { url = "https://files.pythonhosted.org/packages/a3/05/a44f3f9f695fa3ada22786dc9da33c933da1cbc4bfe876fe3a100bafe263/shapely-2.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:5ebe3f84c6112ad3d4632b1fd2290665aa75d4cef5f6c5d77c4c95b324527c6a", size = 1834137, upload-time = "2025-09-24T13:51:26.665Z" }, + { url = "https://files.pythonhosted.org/packages/52/7e/4d57db45bf314573427b0a70dfca15d912d108e6023f623947fa69f39b72/shapely-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5860eb9f00a1d49ebb14e881f5caf6c2cf472c7fd38bd7f253bbd34f934eb076", size = 1642884, upload-time = "2025-09-24T13:51:28.029Z" }, + { url = "https://files.pythonhosted.org/packages/5a/27/4e29c0a55d6d14ad7422bf86995d7ff3f54af0eba59617eb95caf84b9680/shapely-2.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b705c99c76695702656327b819c9660768ec33f5ce01fa32b2af62b56ba400a1", size = 3018320, upload-time = "2025-09-24T13:51:29.903Z" }, + { url = "https://files.pythonhosted.org/packages/9f/bb/992e6a3c463f4d29d4cd6ab8963b75b1b1040199edbd72beada4af46bde5/shapely-2.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a1fd0ea855b2cf7c9cddaf25543e914dd75af9de08785f20ca3085f2c9ca60b0", size = 3094931, upload-time = "2025-09-24T13:51:32.699Z" }, + { url = "https://files.pythonhosted.org/packages/9c/16/82e65e21070e473f0ed6451224ed9fa0be85033d17e0c6e7213a12f59d12/shapely-2.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:df90e2db118c3671a0754f38e36802db75fe0920d211a27481daf50a711fdf26", size = 4030406, upload-time = "2025-09-24T13:51:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/7c/75/c24ed871c576d7e2b64b04b1fe3d075157f6eb54e59670d3f5ffb36e25c7/shapely-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:361b6d45030b4ac64ddd0a26046906c8202eb60d0f9f53085f5179f1d23021a0", size = 4169511, upload-time = "2025-09-24T13:51:36.297Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f7/b3d1d6d18ebf55236eec1c681ce5e665742aab3c0b7b232720a7d43df7b6/shapely-2.1.2-cp314-cp314t-win32.whl", hash = "sha256:b54df60f1fbdecc8ebc2c5b11870461a6417b3d617f555e5033f1505d36e5735", size = 1602607, upload-time = "2025-09-24T13:51:37.757Z" }, + { url = "https://files.pythonhosted.org/packages/9a/f6/f09272a71976dfc138129b8faf435d064a811ae2f708cb147dccdf7aacdb/shapely-2.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:0036ac886e0923417932c2e6369b6c52e38e0ff5d9120b90eef5cd9a5fc5cae9", size = 1796682, upload-time = "2025-09-24T13:51:39.233Z" }, +] + [[package]] name = "shellingham" version = "1.5.4" @@ -2463,6 +4418,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, ] +[[package]] +name = "soupsieve" +version = "2.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349", size = 118627, upload-time = "2026-01-20T04:27:02.457Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, +] + [[package]] name = "tenacity" version = "9.1.2" @@ -2474,69 +4459,206 @@ wheels = [ [[package]] name = "termcolor" -version = "3.2.0" +version = "3.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/56/ab275c2b56a5e2342568838f0d5e3e66a32354adcc159b495e374cda43f5/termcolor-3.2.0.tar.gz", hash = "sha256:610e6456feec42c4bcd28934a8c87a06c3fa28b01561d46aa09a9881b8622c58", size = 14423, upload-time = "2025-10-25T19:11:42.586Z" } +sdist = { url = "https://files.pythonhosted.org/packages/46/79/cf31d7a93a8fdc6aa0fbb665be84426a8c5a557d9240b6239e9e11e35fc5/termcolor-3.3.0.tar.gz", hash = "sha256:348871ca648ec6a9a983a13ab626c0acce02f515b9e1983332b17af7979521c5", size = 14434, upload-time = "2025-12-29T12:55:21.882Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/d5/141f53d7c1eb2a80e6d3e9a390228c3222c27705cbe7f048d3623053f3ca/termcolor-3.2.0-py3-none-any.whl", hash = "sha256:a10343879eba4da819353c55cb8049b0933890c2ebf9ad5d3ecd2bb32ea96ea6", size = 7698, upload-time = "2025-10-25T19:11:41.536Z" }, + { url = "https://files.pythonhosted.org/packages/33/d1/8bb87d21e9aeb323cc03034f5eaf2c8f69841e40e4853c2627edf8111ed3/termcolor-3.3.0-py3-none-any.whl", hash = "sha256:cf642efadaf0a8ebbbf4bc7a31cec2f9b5f21a9f726f4ccbb08192c9c26f43a5", size = 7734, upload-time = "2025-12-29T12:55:20.718Z" }, ] [[package]] -name = "tomli" -version = "2.3.0" +name = "tokenizers" +version = "0.22.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, - { url = "https://files.pythonhosted.org/packages/86/7f/d8fffe6a7aefdb61bced88fcb5e280cfd71e08939da5894161bd71bea022/tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", size = 148084, upload-time = "2025-10-08T22:01:01.63Z" }, - { url = "https://files.pythonhosted.org/packages/47/5c/24935fb6a2ee63e86d80e4d3b58b222dafaf438c416752c8b58537c8b89a/tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", size = 234832, upload-time = "2025-10-08T22:01:02.543Z" }, - { url = "https://files.pythonhosted.org/packages/89/da/75dfd804fc11e6612846758a23f13271b76d577e299592b4371a4ca4cd09/tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", size = 242052, upload-time = "2025-10-08T22:01:03.836Z" }, - { url = "https://files.pythonhosted.org/packages/70/8c/f48ac899f7b3ca7eb13af73bacbc93aec37f9c954df3c08ad96991c8c373/tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", size = 239555, upload-time = "2025-10-08T22:01:04.834Z" }, - { url = "https://files.pythonhosted.org/packages/ba/28/72f8afd73f1d0e7829bfc093f4cb98ce0a40ffc0cc997009ee1ed94ba705/tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", size = 245128, upload-time = "2025-10-08T22:01:05.84Z" }, - { url = "https://files.pythonhosted.org/packages/b6/eb/a7679c8ac85208706d27436e8d421dfa39d4c914dcf5fa8083a9305f58d9/tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456", size = 96445, upload-time = "2025-10-08T22:01:06.896Z" }, - { url = "https://files.pythonhosted.org/packages/0a/fe/3d3420c4cb1ad9cb462fb52967080575f15898da97e21cb6f1361d505383/tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be", size = 107165, upload-time = "2025-10-08T22:01:08.107Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b7/40f36368fcabc518bb11c8f06379a0fd631985046c038aca08c6d6a43c6e/tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac", size = 154891, upload-time = "2025-10-08T22:01:09.082Z" }, - { url = "https://files.pythonhosted.org/packages/f9/3f/d9dd692199e3b3aab2e4e4dd948abd0f790d9ded8cd10cbaae276a898434/tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22", size = 148796, upload-time = "2025-10-08T22:01:10.266Z" }, - { url = "https://files.pythonhosted.org/packages/60/83/59bff4996c2cf9f9387a0f5a3394629c7efa5ef16142076a23a90f1955fa/tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f", size = 242121, upload-time = "2025-10-08T22:01:11.332Z" }, - { url = "https://files.pythonhosted.org/packages/45/e5/7c5119ff39de8693d6baab6c0b6dcb556d192c165596e9fc231ea1052041/tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52", size = 250070, upload-time = "2025-10-08T22:01:12.498Z" }, - { url = "https://files.pythonhosted.org/packages/45/12/ad5126d3a278f27e6701abde51d342aa78d06e27ce2bb596a01f7709a5a2/tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8", size = 245859, upload-time = "2025-10-08T22:01:13.551Z" }, - { url = "https://files.pythonhosted.org/packages/fb/a1/4d6865da6a71c603cfe6ad0e6556c73c76548557a8d658f9e3b142df245f/tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6", size = 250296, upload-time = "2025-10-08T22:01:14.614Z" }, - { url = "https://files.pythonhosted.org/packages/a0/b7/a7a7042715d55c9ba6e8b196d65d2cb662578b4d8cd17d882d45322b0d78/tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876", size = 97124, upload-time = "2025-10-08T22:01:15.629Z" }, - { url = "https://files.pythonhosted.org/packages/06/1e/f22f100db15a68b520664eb3328fb0ae4e90530887928558112c8d1f4515/tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878", size = 107698, upload-time = "2025-10-08T22:01:16.51Z" }, - { url = "https://files.pythonhosted.org/packages/89/48/06ee6eabe4fdd9ecd48bf488f4ac783844fd777f547b8d1b61c11939974e/tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b", size = 154819, upload-time = "2025-10-08T22:01:17.964Z" }, - { url = "https://files.pythonhosted.org/packages/f1/01/88793757d54d8937015c75dcdfb673c65471945f6be98e6a0410fba167ed/tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae", size = 148766, upload-time = "2025-10-08T22:01:18.959Z" }, - { url = "https://files.pythonhosted.org/packages/42/17/5e2c956f0144b812e7e107f94f1cc54af734eb17b5191c0bbfb72de5e93e/tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b", size = 240771, upload-time = "2025-10-08T22:01:20.106Z" }, - { url = "https://files.pythonhosted.org/packages/d5/f4/0fbd014909748706c01d16824eadb0307115f9562a15cbb012cd9b3512c5/tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf", size = 248586, upload-time = "2025-10-08T22:01:21.164Z" }, - { url = "https://files.pythonhosted.org/packages/30/77/fed85e114bde5e81ecf9bc5da0cc69f2914b38f4708c80ae67d0c10180c5/tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f", size = 244792, upload-time = "2025-10-08T22:01:22.417Z" }, - { url = "https://files.pythonhosted.org/packages/55/92/afed3d497f7c186dc71e6ee6d4fcb0acfa5f7d0a1a2878f8beae379ae0cc/tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05", size = 248909, upload-time = "2025-10-08T22:01:23.859Z" }, - { url = "https://files.pythonhosted.org/packages/f8/84/ef50c51b5a9472e7265ce1ffc7f24cd4023d289e109f669bdb1553f6a7c2/tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606", size = 96946, upload-time = "2025-10-08T22:01:24.893Z" }, - { url = "https://files.pythonhosted.org/packages/b2/b7/718cd1da0884f281f95ccfa3a6cc572d30053cba64603f79d431d3c9b61b/tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999", size = 107705, upload-time = "2025-10-08T22:01:26.153Z" }, - { url = "https://files.pythonhosted.org/packages/19/94/aeafa14a52e16163008060506fcb6aa1949d13548d13752171a755c65611/tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e", size = 154244, upload-time = "2025-10-08T22:01:27.06Z" }, - { url = "https://files.pythonhosted.org/packages/db/e4/1e58409aa78eefa47ccd19779fc6f36787edbe7d4cd330eeeedb33a4515b/tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3", size = 148637, upload-time = "2025-10-08T22:01:28.059Z" }, - { url = "https://files.pythonhosted.org/packages/26/b6/d1eccb62f665e44359226811064596dd6a366ea1f985839c566cd61525ae/tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc", size = 241925, upload-time = "2025-10-08T22:01:29.066Z" }, - { url = "https://files.pythonhosted.org/packages/70/91/7cdab9a03e6d3d2bb11beae108da5bdc1c34bdeb06e21163482544ddcc90/tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0", size = 249045, upload-time = "2025-10-08T22:01:31.98Z" }, - { url = "https://files.pythonhosted.org/packages/15/1b/8c26874ed1f6e4f1fcfeb868db8a794cbe9f227299402db58cfcc858766c/tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879", size = 245835, upload-time = "2025-10-08T22:01:32.989Z" }, - { url = "https://files.pythonhosted.org/packages/fd/42/8e3c6a9a4b1a1360c1a2a39f0b972cef2cc9ebd56025168c4137192a9321/tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005", size = 253109, upload-time = "2025-10-08T22:01:34.052Z" }, - { url = "https://files.pythonhosted.org/packages/22/0c/b4da635000a71b5f80130937eeac12e686eefb376b8dee113b4a582bba42/tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463", size = 97930, upload-time = "2025-10-08T22:01:35.082Z" }, - { url = "https://files.pythonhosted.org/packages/b9/74/cb1abc870a418ae99cd5c9547d6bce30701a954e0e721821df483ef7223c/tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8", size = 107964, upload-time = "2025-10-08T22:01:36.057Z" }, - { url = "https://files.pythonhosted.org/packages/54/78/5c46fff6432a712af9f792944f4fcd7067d8823157949f4e40c56b8b3c83/tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77", size = 163065, upload-time = "2025-10-08T22:01:37.27Z" }, - { url = "https://files.pythonhosted.org/packages/39/67/f85d9bd23182f45eca8939cd2bc7050e1f90c41f4a2ecbbd5963a1d1c486/tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf", size = 159088, upload-time = "2025-10-08T22:01:38.235Z" }, - { url = "https://files.pythonhosted.org/packages/26/5a/4b546a0405b9cc0659b399f12b6adb750757baf04250b148d3c5059fc4eb/tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530", size = 268193, upload-time = "2025-10-08T22:01:39.712Z" }, - { url = "https://files.pythonhosted.org/packages/42/4f/2c12a72ae22cf7b59a7fe75b3465b7aba40ea9145d026ba41cb382075b0e/tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b", size = 275488, upload-time = "2025-10-08T22:01:40.773Z" }, - { url = "https://files.pythonhosted.org/packages/92/04/a038d65dbe160c3aa5a624e93ad98111090f6804027d474ba9c37c8ae186/tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67", size = 272669, upload-time = "2025-10-08T22:01:41.824Z" }, - { url = "https://files.pythonhosted.org/packages/be/2f/8b7c60a9d1612a7cbc39ffcca4f21a73bf368a80fc25bccf8253e2563267/tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f", size = 279709, upload-time = "2025-10-08T22:01:43.177Z" }, - { url = "https://files.pythonhosted.org/packages/7e/46/cc36c679f09f27ded940281c38607716c86cf8ba4a518d524e349c8b4874/tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0", size = 107563, upload-time = "2025-10-08T22:01:44.233Z" }, - { url = "https://files.pythonhosted.org/packages/84/ff/426ca8683cf7b753614480484f6437f568fd2fda2edbdf57a2d3d8b27a0b/tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba", size = 119756, upload-time = "2025-10-08T22:01:45.234Z" }, - { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, +dependencies = [ + { name = "huggingface-hub" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/6f/f80cfef4a312e1fb34baf7d85c72d4411afde10978d4657f8cdd811d3ccc/tokenizers-0.22.2.tar.gz", hash = "sha256:473b83b915e547aa366d1eee11806deaf419e17be16310ac0a14077f1e28f917", size = 372115, upload-time = "2026-01-05T10:45:15.988Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/97/5dbfabf04c7e348e655e907ed27913e03db0923abb5dfdd120d7b25630e1/tokenizers-0.22.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:544dd704ae7238755d790de45ba8da072e9af3eea688f698b137915ae959281c", size = 3100275, upload-time = "2026-01-05T10:41:02.158Z" }, + { url = "https://files.pythonhosted.org/packages/2e/47/174dca0502ef88b28f1c9e06b73ce33500eedfac7a7692108aec220464e7/tokenizers-0.22.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1e418a55456beedca4621dbab65a318981467a2b188e982a23e117f115ce5001", size = 2981472, upload-time = "2026-01-05T10:41:00.276Z" }, + { url = "https://files.pythonhosted.org/packages/d6/84/7990e799f1309a8b87af6b948f31edaa12a3ed22d11b352eaf4f4b2e5753/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249487018adec45d6e3554c71d46eb39fa8ea67156c640f7513eb26f318cec7", size = 3290736, upload-time = "2026-01-05T10:40:32.165Z" }, + { url = "https://files.pythonhosted.org/packages/78/59/09d0d9ba94dcd5f4f1368d4858d24546b4bdc0231c2354aa31d6199f0399/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25b85325d0815e86e0bac263506dd114578953b7b53d7de09a6485e4a160a7dd", size = 3168835, upload-time = "2026-01-05T10:40:38.847Z" }, + { url = "https://files.pythonhosted.org/packages/47/50/b3ebb4243e7160bda8d34b731e54dd8ab8b133e50775872e7a434e524c28/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfb88f22a209ff7b40a576d5324bf8286b519d7358663db21d6246fb17eea2d5", size = 3521673, upload-time = "2026-01-05T10:40:56.614Z" }, + { url = "https://files.pythonhosted.org/packages/e0/fa/89f4cb9e08df770b57adb96f8cbb7e22695a4cb6c2bd5f0c4f0ebcf33b66/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c774b1276f71e1ef716e5486f21e76333464f47bece56bbd554485982a9e03e", size = 3724818, upload-time = "2026-01-05T10:40:44.507Z" }, + { url = "https://files.pythonhosted.org/packages/64/04/ca2363f0bfbe3b3d36e95bf67e56a4c88c8e3362b658e616d1ac185d47f2/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df6c4265b289083bf710dff49bc51ef252f9d5be33a45ee2bed151114a56207b", size = 3379195, upload-time = "2026-01-05T10:40:51.139Z" }, + { url = "https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:369cc9fc8cc10cb24143873a0d95438bb8ee257bb80c71989e3ee290e8d72c67", size = 3274982, upload-time = "2026-01-05T10:40:58.331Z" }, + { url = "https://files.pythonhosted.org/packages/1d/28/5f9f5a4cc211b69e89420980e483831bcc29dade307955cc9dc858a40f01/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:29c30b83d8dcd061078b05ae0cb94d3c710555fbb44861139f9f83dcca3dc3e4", size = 9478245, upload-time = "2026-01-05T10:41:04.053Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fb/66e2da4704d6aadebf8cb39f1d6d1957df667ab24cff2326b77cda0dcb85/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:37ae80a28c1d3265bb1f22464c856bd23c02a05bb211e56d0c5301a435be6c1a", size = 9560069, upload-time = "2026-01-05T10:45:10.673Z" }, + { url = "https://files.pythonhosted.org/packages/16/04/fed398b05caa87ce9b1a1bb5166645e38196081b225059a6edaff6440fac/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:791135ee325f2336f498590eb2f11dc5c295232f288e75c99a36c5dbce63088a", size = 9899263, upload-time = "2026-01-05T10:45:12.559Z" }, + { url = "https://files.pythonhosted.org/packages/05/a1/d62dfe7376beaaf1394917e0f8e93ee5f67fea8fcf4107501db35996586b/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38337540fbbddff8e999d59970f3c6f35a82de10053206a7562f1ea02d046fa5", size = 10033429, upload-time = "2026-01-05T10:45:14.333Z" }, + { url = "https://files.pythonhosted.org/packages/fd/18/a545c4ea42af3df6effd7d13d250ba77a0a86fb20393143bbb9a92e434d4/tokenizers-0.22.2-cp39-abi3-win32.whl", hash = "sha256:a6bf3f88c554a2b653af81f3204491c818ae2ac6fbc09e76ef4773351292bc92", size = 2502363, upload-time = "2026-01-05T10:45:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/65/71/0670843133a43d43070abeb1949abfdef12a86d490bea9cd9e18e37c5ff7/tokenizers-0.22.2-cp39-abi3-win_amd64.whl", hash = "sha256:c9ea31edff2968b44a88f97d784c2f16dc0729b8b143ed004699ebca91f05c48", size = 2747786, upload-time = "2026-01-05T10:45:18.411Z" }, + { url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" }, + { url = "https://files.pythonhosted.org/packages/84/04/655b79dbcc9b3ac5f1479f18e931a344af67e5b7d3b251d2dcdcd7558592/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:753d47ebd4542742ef9261d9da92cd545b2cacbb48349a1225466745bb866ec4", size = 3282301, upload-time = "2026-01-05T10:40:34.858Z" }, + { url = "https://files.pythonhosted.org/packages/46/cd/e4851401f3d8f6f45d8480262ab6a5c8cb9c4302a790a35aa14eeed6d2fd/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e10bf9113d209be7cd046d40fbabbaf3278ff6d18eb4da4c500443185dc1896c", size = 3161308, upload-time = "2026-01-05T10:40:40.737Z" }, + { url = "https://files.pythonhosted.org/packages/6f/6e/55553992a89982cd12d4a66dddb5e02126c58677ea3931efcbe601d419db/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64d94e84f6660764e64e7e0b22baa72f6cd942279fdbb21d46abd70d179f0195", size = 3718964, upload-time = "2026-01-05T10:40:46.56Z" }, + { url = "https://files.pythonhosted.org/packages/59/8c/b1c87148aa15e099243ec9f0cf9d0e970cc2234c3257d558c25a2c5304e6/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f01a9c019878532f98927d2bacb79bbb404b43d3437455522a00a30718cdedb5", size = 3373542, upload-time = "2026-01-05T10:40:52.803Z" }, +] + +[[package]] +name = "tomli" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, + { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, + { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, + { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, + { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, + { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, + { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, + { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, + { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, + { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, + { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, + { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, + { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, + { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, + { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, + { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, + { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, + { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, + { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, + { url = "https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, + { url = "https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, + { url = "https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, + { url = "https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, + { url = "https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, + { url = "https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, + { url = "https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, + { url = "https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, + { url = "https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, + { url = "https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, + { url = "https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, + { url = "https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, + { url = "https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, + { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, ] [[package]] name = "tomlkit" -version = "0.13.3" +version = "0.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload-time = "2025-06-05T07:13:44.947Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/af/14b24e41977adb296d6bd1fb59402cf7d60ce364f90c890bd2ec65c43b5a/tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064", size = 187167, upload-time = "2026-01-13T01:14:53.304Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/11/87d6d29fb5d237229d67973a6c9e06e048f01cf4994dee194ab0ea841814/tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680", size = 39310, upload-time = "2026-01-13T01:14:51.965Z" }, +] + +[[package]] +name = "torch" +version = "2.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cufile-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "setuptools", marker = "python_full_version >= '3.12'" }, + { name = "sympy" }, + { name = "triton", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "typing-extensions" }, +] wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/5f/56/9577683b23072075ed2e40d725c52c2019d71a972fab8e083763da8e707e/torch-2.9.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:1cc208435f6c379f9b8fdfd5ceb5be1e3b72a6bdf1cb46c0d2812aa73472db9e", size = 104207681, upload-time = "2025-11-12T15:19:56.48Z" }, + { url = "https://files.pythonhosted.org/packages/38/45/be5a74f221df8f4b609b78ff79dc789b0cc9017624544ac4dd1c03973150/torch-2.9.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:9fd35c68b3679378c11f5eb73220fdcb4e6f4592295277fbb657d31fd053237c", size = 899794036, upload-time = "2025-11-12T15:21:01.886Z" }, + { url = "https://files.pythonhosted.org/packages/67/95/a581e8a382596b69385a44bab2733f1273d45c842f5d4a504c0edc3133b6/torch-2.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:2af70e3be4a13becba4655d6cc07dcfec7ae844db6ac38d6c1dafeb245d17d65", size = 110969861, upload-time = "2025-11-12T15:21:30.145Z" }, + { url = "https://files.pythonhosted.org/packages/ad/51/1756dc128d2bf6ea4e0a915cb89ea5e730315ff33d60c1ff56fd626ba3eb/torch-2.9.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:a83b0e84cc375e3318a808d032510dde99d696a85fe9473fc8575612b63ae951", size = 74452222, upload-time = "2025-11-12T15:20:46.223Z" }, + { url = "https://files.pythonhosted.org/packages/15/db/c064112ac0089af3d2f7a2b5bfbabf4aa407a78b74f87889e524b91c5402/torch-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:62b3fd888277946918cba4478cf849303da5359f0fb4e3bfb86b0533ba2eaf8d", size = 104220430, upload-time = "2025-11-12T15:20:31.705Z" }, + { url = "https://files.pythonhosted.org/packages/56/be/76eaa36c9cd032d3b01b001e2c5a05943df75f26211f68fae79e62f87734/torch-2.9.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d033ff0ac3f5400df862a51bdde9bad83561f3739ea0046e68f5401ebfa67c1b", size = 899821446, upload-time = "2025-11-12T15:20:15.544Z" }, + { url = "https://files.pythonhosted.org/packages/47/cc/7a2949e38dfe3244c4df21f0e1c27bce8aedd6c604a587dd44fc21017cb4/torch-2.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:0d06b30a9207b7c3516a9e0102114024755a07045f0c1d2f2a56b1819ac06bcb", size = 110973074, upload-time = "2025-11-12T15:21:39.958Z" }, + { url = "https://files.pythonhosted.org/packages/1e/ce/7d251155a783fb2c1bb6837b2b7023c622a2070a0a72726ca1df47e7ea34/torch-2.9.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:52347912d868653e1528b47cafaf79b285b98be3f4f35d5955389b1b95224475", size = 74463887, upload-time = "2025-11-12T15:20:36.611Z" }, + { url = "https://files.pythonhosted.org/packages/0f/27/07c645c7673e73e53ded71705045d6cb5bae94c4b021b03aa8d03eee90ab/torch-2.9.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:da5f6f4d7f4940a173e5572791af238cb0b9e21b1aab592bd8b26da4c99f1cd6", size = 104126592, upload-time = "2025-11-12T15:20:41.62Z" }, + { url = "https://files.pythonhosted.org/packages/19/17/e377a460603132b00760511299fceba4102bd95db1a0ee788da21298ccff/torch-2.9.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:27331cd902fb4322252657f3902adf1c4f6acad9dcad81d8df3ae14c7c4f07c4", size = 899742281, upload-time = "2025-11-12T15:22:17.602Z" }, + { url = "https://files.pythonhosted.org/packages/b1/1a/64f5769025db846a82567fa5b7d21dba4558a7234ee631712ee4771c436c/torch-2.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:81a285002d7b8cfd3fdf1b98aa8df138d41f1a8334fd9ea37511517cedf43083", size = 110940568, upload-time = "2025-11-12T15:21:18.689Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ab/07739fd776618e5882661d04c43f5b5586323e2f6a2d7d84aac20d8f20bd/torch-2.9.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:c0d25d1d8e531b8343bea0ed811d5d528958f1dcbd37e7245bc686273177ad7e", size = 74479191, upload-time = "2025-11-12T15:21:25.816Z" }, + { url = "https://files.pythonhosted.org/packages/20/60/8fc5e828d050bddfab469b3fe78e5ab9a7e53dda9c3bdc6a43d17ce99e63/torch-2.9.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c29455d2b910b98738131990394da3e50eea8291dfeb4b12de71ecf1fdeb21cb", size = 104135743, upload-time = "2025-11-12T15:21:34.936Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b7/6d3f80e6918213babddb2a37b46dbb14c15b14c5f473e347869a51f40e1f/torch-2.9.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:524de44cd13931208ba2c4bde9ec7741fd4ae6bfd06409a604fc32f6520c2bc9", size = 899749493, upload-time = "2025-11-12T15:24:36.356Z" }, + { url = "https://files.pythonhosted.org/packages/a6/47/c7843d69d6de8938c1cbb1eba426b1d48ddf375f101473d3e31a5fc52b74/torch-2.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:545844cc16b3f91e08ce3b40e9c2d77012dd33a48d505aed34b7740ed627a1b2", size = 110944162, upload-time = "2025-11-12T15:21:53.151Z" }, + { url = "https://files.pythonhosted.org/packages/28/0e/2a37247957e72c12151b33a01e4df651d9d155dd74d8cfcbfad15a79b44a/torch-2.9.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5be4bf7496f1e3ffb1dd44b672adb1ac3f081f204c5ca81eba6442f5f634df8e", size = 74830751, upload-time = "2025-11-12T15:21:43.792Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/7a18745edcd7b9ca2381aa03353647bca8aace91683c4975f19ac233809d/torch-2.9.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:30a3e170a84894f3652434b56d59a64a2c11366b0ed5776fab33c2439396bf9a", size = 104142929, upload-time = "2025-11-12T15:21:48.319Z" }, + { url = "https://files.pythonhosted.org/packages/f4/dd/f1c0d879f2863ef209e18823a988dc7a1bf40470750e3ebe927efdb9407f/torch-2.9.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:8301a7b431e51764629208d0edaa4f9e4c33e6df0f2f90b90e261d623df6a4e2", size = 899748978, upload-time = "2025-11-12T15:23:04.568Z" }, + { url = "https://files.pythonhosted.org/packages/1f/9f/6986b83a53b4d043e36f3f898b798ab51f7f20fdf1a9b01a2720f445043d/torch-2.9.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2e1c42c0ae92bf803a4b2409fdfed85e30f9027a66887f5e7dcdbc014c7531db", size = 111176995, upload-time = "2025-11-12T15:22:01.618Z" }, + { url = "https://files.pythonhosted.org/packages/40/60/71c698b466dd01e65d0e9514b5405faae200c52a76901baf6906856f17e4/torch-2.9.1-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:2c14b3da5df416cf9cb5efab83aa3056f5b8cd8620b8fde81b4987ecab730587", size = 74480347, upload-time = "2025-11-12T15:21:57.648Z" }, + { url = "https://files.pythonhosted.org/packages/48/50/c4b5112546d0d13cc9eaa1c732b823d676a9f49ae8b6f97772f795874a03/torch-2.9.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1edee27a7c9897f4e0b7c14cfc2f3008c571921134522d5b9b5ec4ebbc69041a", size = 74433245, upload-time = "2025-11-12T15:22:39.027Z" }, + { url = "https://files.pythonhosted.org/packages/81/c9/2628f408f0518b3bae49c95f5af3728b6ab498c8624ab1e03a43dd53d650/torch-2.9.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:19d144d6b3e29921f1fc70503e9f2fc572cde6a5115c0c0de2f7ca8b1483e8b6", size = 104134804, upload-time = "2025-11-12T15:22:35.222Z" }, + { url = "https://files.pythonhosted.org/packages/28/fc/5bc91d6d831ae41bf6e9e6da6468f25330522e92347c9156eb3f1cb95956/torch-2.9.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:c432d04376f6d9767a9852ea0def7b47a7bbc8e7af3b16ac9cf9ce02b12851c9", size = 899747132, upload-time = "2025-11-12T15:23:36.068Z" }, + { url = "https://files.pythonhosted.org/packages/63/5d/e8d4e009e52b6b2cf1684bde2a6be157b96fb873732542fb2a9a99e85a83/torch-2.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:d187566a2cdc726fc80138c3cdb260970fab1c27e99f85452721f7759bbd554d", size = 110934845, upload-time = "2025-11-12T15:22:48.367Z" }, + { url = "https://files.pythonhosted.org/packages/bd/b2/2d15a52516b2ea3f414643b8de68fa4cb220d3877ac8b1028c83dc8ca1c4/torch-2.9.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cb10896a1f7fedaddbccc2017ce6ca9ecaaf990f0973bdfcf405439750118d2c", size = 74823558, upload-time = "2025-11-12T15:22:43.392Z" }, + { url = "https://files.pythonhosted.org/packages/86/5c/5b2e5d84f5b9850cd1e71af07524d8cbb74cba19379800f1f9f7c997fc70/torch-2.9.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:0a2bd769944991c74acf0c4ef23603b9c777fdf7637f115605a4b2d8023110c7", size = 104145788, upload-time = "2025-11-12T15:23:52.109Z" }, + { url = "https://files.pythonhosted.org/packages/a9/8c/3da60787bcf70add986c4ad485993026ac0ca74f2fc21410bc4eb1bb7695/torch-2.9.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:07c8a9660bc9414c39cac530ac83b1fb1b679d7155824144a40a54f4a47bfa73", size = 899735500, upload-time = "2025-11-12T15:24:08.788Z" }, + { url = "https://files.pythonhosted.org/packages/db/2b/f7818f6ec88758dfd21da46b6cd46af9d1b3433e53ddbb19ad1e0da17f9b/torch-2.9.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c88d3299ddeb2b35dcc31753305612db485ab6f1823e37fb29451c8b2732b87e", size = 111163659, upload-time = "2025-11-12T15:23:20.009Z" }, +] + +[[package]] +name = "torchvision" +version = "0.24.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pillow" }, + { name = "torch" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/09/d51aadf8591138e08b74c64a6eb783630c7a31ca2634416277115a9c3a2b/torchvision-0.24.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ded5e625788572e4e1c4d155d1bbc48805c113794100d70e19c76e39e4d53465", size = 1891441, upload-time = "2025-11-12T15:25:01.687Z" }, + { url = "https://files.pythonhosted.org/packages/6b/49/a35df863e7c153aad82af7505abd8264a5b510306689712ef86bea862822/torchvision-0.24.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:54ed17c3d30e718e08d8da3fd5b30ea44b0311317e55647cb97077a29ecbc25b", size = 2386226, upload-time = "2025-11-12T15:25:05.449Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/f2d7cd1eea052887c1083afff0b8df5228ec93b53e03759f20b1a3c6d22a/torchvision-0.24.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f476da4e085b7307aaab6f540219617d46d5926aeda24be33e1359771c83778f", size = 8046093, upload-time = "2025-11-12T15:25:09.425Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cf/0ff4007c09903199307da5f53a192ff5d62b45447069e9ef3a19bdc5ff12/torchvision-0.24.1-cp310-cp310-win_amd64.whl", hash = "sha256:fbdbdae5e540b868a681240b7dbd6473986c862445ee8a138680a6a97d6c34ff", size = 3696202, upload-time = "2025-11-12T15:25:10.657Z" }, + { url = "https://files.pythonhosted.org/packages/e7/69/30f5f03752aa1a7c23931d2519b31e557f3f10af5089d787cddf3b903ecf/torchvision-0.24.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:056c525dc875f18fe8e9c27079ada166a7b2755cea5a2199b0bc7f1f8364e600", size = 1891436, upload-time = "2025-11-12T15:25:04.3Z" }, + { url = "https://files.pythonhosted.org/packages/0c/69/49aae86edb75fe16460b59a191fcc0f568c2378f780bb063850db0fe007a/torchvision-0.24.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:1e39619de698e2821d71976c92c8a9e50cdfd1e993507dfb340f2688bfdd8283", size = 2387757, upload-time = "2025-11-12T15:25:06.795Z" }, + { url = "https://files.pythonhosted.org/packages/11/c9/1dfc3db98797b326f1d0c3f3bb61c83b167a813fc7eab6fcd2edb8c7eb9d/torchvision-0.24.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a0f106663e60332aa4fcb1ca2159ef8c3f2ed266b0e6df88de261048a840e0df", size = 8047682, upload-time = "2025-11-12T15:25:21.125Z" }, + { url = "https://files.pythonhosted.org/packages/fa/bb/cfc6a6f6ccc84a534ed1fdf029ae5716dd6ff04e57ed9dc2dab38bf652d5/torchvision-0.24.1-cp311-cp311-win_amd64.whl", hash = "sha256:a9308cdd37d8a42e14a3e7fd9d271830c7fecb150dd929b642f3c1460514599a", size = 4037588, upload-time = "2025-11-12T15:25:14.402Z" }, + { url = "https://files.pythonhosted.org/packages/f0/af/18e2c6b9538a045f60718a0c5a058908ccb24f88fde8e6f0fc12d5ff7bd3/torchvision-0.24.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e48bf6a8ec95872eb45763f06499f87bd2fb246b9b96cb00aae260fda2f96193", size = 1891433, upload-time = "2025-11-12T15:25:03.232Z" }, + { url = "https://files.pythonhosted.org/packages/9d/43/600e5cfb0643d10d633124f5982d7abc2170dfd7ce985584ff16edab3e76/torchvision-0.24.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:7fb7590c737ebe3e1c077ad60c0e5e2e56bb26e7bccc3b9d04dbfc34fd09f050", size = 2386737, upload-time = "2025-11-12T15:25:08.288Z" }, + { url = "https://files.pythonhosted.org/packages/93/b1/db2941526ecddd84884132e2742a55c9311296a6a38627f9e2627f5ac889/torchvision-0.24.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:66a98471fc18cad9064123106d810a75f57f0838eee20edc56233fd8484b0cc7", size = 8049868, upload-time = "2025-11-12T15:25:13.058Z" }, + { url = "https://files.pythonhosted.org/packages/69/98/16e583f59f86cd59949f59d52bfa8fc286f86341a229a9d15cbe7a694f0c/torchvision-0.24.1-cp312-cp312-win_amd64.whl", hash = "sha256:4aa6cb806eb8541e92c9b313e96192c6b826e9eb0042720e2fa250d021079952", size = 4302006, upload-time = "2025-11-12T15:25:16.184Z" }, + { url = "https://files.pythonhosted.org/packages/e4/97/ab40550f482577f2788304c27220e8ba02c63313bd74cf2f8920526aac20/torchvision-0.24.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:8a6696db7fb71eadb2c6a48602106e136c785642e598eb1533e0b27744f2cce6", size = 1891435, upload-time = "2025-11-12T15:25:28.642Z" }, + { url = "https://files.pythonhosted.org/packages/30/65/ac0a3f9be6abdbe4e1d82c915d7e20de97e7fd0e9a277970508b015309f3/torchvision-0.24.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:db2125c46f9cb25dc740be831ce3ce99303cfe60439249a41b04fd9f373be671", size = 2338718, upload-time = "2025-11-12T15:25:26.19Z" }, + { url = "https://files.pythonhosted.org/packages/10/b5/5bba24ff9d325181508501ed7f0c3de8ed3dd2edca0784d48b144b6c5252/torchvision-0.24.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:f035f0cacd1f44a8ff6cb7ca3627d84c54d685055961d73a1a9fb9827a5414c8", size = 8049661, upload-time = "2025-11-12T15:25:22.558Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ec/54a96ae9ab6a0dd66d4bba27771f892e36478a9c3489fa56e51c70abcc4d/torchvision-0.24.1-cp313-cp313-win_amd64.whl", hash = "sha256:16274823b93048e0a29d83415166a2e9e0bf4e1b432668357b657612a4802864", size = 4319808, upload-time = "2025-11-12T15:25:17.318Z" }, + { url = "https://files.pythonhosted.org/packages/d5/f3/a90a389a7e547f3eb8821b13f96ea7c0563cdefbbbb60a10e08dda9720ff/torchvision-0.24.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e3f96208b4bef54cd60e415545f5200346a65024e04f29a26cd0006dbf9e8e66", size = 2005342, upload-time = "2025-11-12T15:25:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/a9/fe/ff27d2ed1b524078164bea1062f23d2618a5fc3208e247d6153c18c91a76/torchvision-0.24.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:f231f6a4f2aa6522713326d0d2563538fa72d613741ae364f9913027fa52ea35", size = 2341708, upload-time = "2025-11-12T15:25:25.08Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b9/d6c903495cbdfd2533b3ef6f7b5643ff589ea062f8feb5c206ee79b9d9e5/torchvision-0.24.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:1540a9e7f8cf55fe17554482f5a125a7e426347b71de07327d5de6bfd8d17caa", size = 8177239, upload-time = "2025-11-12T15:25:18.554Z" }, + { url = "https://files.pythonhosted.org/packages/4f/2b/ba02e4261369c3798310483028495cf507e6cb3f394f42e4796981ecf3a7/torchvision-0.24.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d83e16d70ea85d2f196d678bfb702c36be7a655b003abed84e465988b6128938", size = 4251604, upload-time = "2025-11-12T15:25:34.069Z" }, + { url = "https://files.pythonhosted.org/packages/42/84/577b2cef8f32094add5f52887867da4c2a3e6b4261538447e9b48eb25812/torchvision-0.24.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cccf4b4fec7fdfcd3431b9ea75d1588c0a8596d0333245dafebee0462abe3388", size = 2005319, upload-time = "2025-11-12T15:25:23.827Z" }, + { url = "https://files.pythonhosted.org/packages/5f/34/ecb786bffe0159a3b49941a61caaae089853132f3cd1e8f555e3621f7e6f/torchvision-0.24.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:1b495edd3a8f9911292424117544f0b4ab780452e998649425d1f4b2bed6695f", size = 2338844, upload-time = "2025-11-12T15:25:32.625Z" }, + { url = "https://files.pythonhosted.org/packages/51/99/a84623786a6969504c87f2dc3892200f586ee13503f519d282faab0bb4f0/torchvision-0.24.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:ab211e1807dc3e53acf8f6638df9a7444c80c0ad050466e8d652b3e83776987b", size = 8175144, upload-time = "2025-11-12T15:25:31.355Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ba/8fae3525b233e109317ce6a9c1de922ab2881737b029a7e88021f81e068f/torchvision-0.24.1-cp314-cp314-win_amd64.whl", hash = "sha256:18f9cb60e64b37b551cd605a3d62c15730c086362b40682d23e24b616a697d41", size = 4234459, upload-time = "2025-11-12T15:25:19.859Z" }, + { url = "https://files.pythonhosted.org/packages/50/33/481602c1c72d0485d4b3a6b48c9534b71c2957c9d83bf860eb837bf5a620/torchvision-0.24.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ec9d7379c519428395e4ffda4dbb99ec56be64b0a75b95989e00f9ec7ae0b2d7", size = 2005336, upload-time = "2025-11-12T15:25:27.225Z" }, + { url = "https://files.pythonhosted.org/packages/d0/7f/372de60bf3dd8f5593bd0d03f4aecf0d1fd58f5bc6943618d9d913f5e6d5/torchvision-0.24.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:af9201184c2712d808bd4eb656899011afdfce1e83721c7cb08000034df353fe", size = 2341704, upload-time = "2025-11-12T15:25:29.857Z" }, + { url = "https://files.pythonhosted.org/packages/36/9b/0f3b9ff3d0225ee2324ec663de0e7fb3eb855615ca958ac1875f22f1f8e5/torchvision-0.24.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:9ef95d819fd6df81bc7cc97b8f21a15d2c0d3ac5dbfaab5cbc2d2ce57114b19e", size = 8177422, upload-time = "2025-11-12T15:25:37.357Z" }, + { url = "https://files.pythonhosted.org/packages/d6/ab/e2bcc7c2f13d882a58f8b30ff86f794210b075736587ea50f8c545834f8a/torchvision-0.24.1-cp314-cp314t-win_amd64.whl", hash = "sha256:480b271d6edff83ac2e8d69bbb4cf2073f93366516a50d48f140ccfceedb002e", size = 4335190, upload-time = "2025-11-12T15:25:35.745Z" }, ] [[package]] @@ -2551,34 +4673,165 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, ] +[[package]] +name = "transformers" +version = "4.57.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "huggingface-hub" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "regex" }, + { name = "requests" }, + { name = "safetensors" }, + { name = "tokenizers" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/35/67252acc1b929dc88b6602e8c4a982e64f31e733b804c14bc24b47da35e6/transformers-4.57.6.tar.gz", hash = "sha256:55e44126ece9dc0a291521b7e5492b572e6ef2766338a610b9ab5afbb70689d3", size = 10134912, upload-time = "2026-01-16T10:38:39.284Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/b8/e484ef633af3887baeeb4b6ad12743363af7cce68ae51e938e00aaa0529d/transformers-4.57.6-py3-none-any.whl", hash = "sha256:4c9e9de11333ddfe5114bc872c9f370509198acf0b87a832a0ab9458e2bd0550", size = 11993498, upload-time = "2026-01-16T10:38:31.289Z" }, +] + +[[package]] +name = "tree-sitter" +version = "0.24.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/a2/698b9d31d08ad5558f8bfbfe3a0781bd4b1f284e89bde3ad18e05101a892/tree-sitter-0.24.0.tar.gz", hash = "sha256:abd95af65ca2f4f7eca356343391ed669e764f37748b5352946f00f7fc78e734", size = 168304, upload-time = "2025-01-17T05:06:38.115Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/9a/bd627a02e41671af73222316e1fcf87772c7804dc2fba99405275eb1f3eb/tree_sitter-0.24.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f3f00feff1fc47a8e4863561b8da8f5e023d382dd31ed3e43cd11d4cae445445", size = 140890, upload-time = "2025-01-17T05:05:42.659Z" }, + { url = "https://files.pythonhosted.org/packages/5b/9b/b1ccfb187f8be78e2116176a091a2f2abfd043a06d78f80c97c97f315b37/tree_sitter-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f9691be48d98c49ef8f498460278884c666b44129222ed6217477dffad5d4831", size = 134413, upload-time = "2025-01-17T05:05:45.241Z" }, + { url = "https://files.pythonhosted.org/packages/01/39/e25b0042a049eb27e991133a7aa7c49bb8e49a8a7b44ca34e7e6353ba7ac/tree_sitter-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:098a81df9f89cf254d92c1cd0660a838593f85d7505b28249216661d87adde4a", size = 560427, upload-time = "2025-01-17T05:05:46.479Z" }, + { url = "https://files.pythonhosted.org/packages/1c/59/4d132f1388da5242151b90acf32cc56af779bfba063923699ab28b276b62/tree_sitter-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b26bf9e958da6eb7e74a081aab9d9c7d05f9baeaa830dbb67481898fd16f1f5", size = 574327, upload-time = "2025-01-17T05:05:48.93Z" }, + { url = "https://files.pythonhosted.org/packages/ec/97/3914e45ab9e0ff0f157e493caa91791372508488b97ff0961a0640a37d25/tree_sitter-0.24.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2a84ff87a2f2a008867a1064aba510ab3bd608e3e0cd6e8fef0379efee266c73", size = 577171, upload-time = "2025-01-17T05:05:51.588Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b0/266a529c3eef171137b73cde8ad7aa282734354609a8b2f5564428e8f12d/tree_sitter-0.24.0-cp310-cp310-win_amd64.whl", hash = "sha256:c012e4c345c57a95d92ab5a890c637aaa51ab3b7ff25ed7069834b1087361c95", size = 120260, upload-time = "2025-01-17T05:05:53.994Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c3/07bfaa345e0037ff75d98b7a643cf940146e4092a1fd54eed0359836be03/tree_sitter-0.24.0-cp310-cp310-win_arm64.whl", hash = "sha256:033506c1bc2ba7bd559b23a6bdbeaf1127cee3c68a094b82396718596dfe98bc", size = 108416, upload-time = "2025-01-17T05:05:55.056Z" }, + { url = "https://files.pythonhosted.org/packages/66/08/82aaf7cbea7286ee2a0b43e9b75cb93ac6ac132991b7d3c26ebe5e5235a3/tree_sitter-0.24.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:de0fb7c18c6068cacff46250c0a0473e8fc74d673e3e86555f131c2c1346fb13", size = 140733, upload-time = "2025-01-17T05:05:56.307Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bd/1a84574911c40734d80327495e6e218e8f17ef318dd62bb66b55c1e969f5/tree_sitter-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a7c9c89666dea2ce2b2bf98e75f429d2876c569fab966afefdcd71974c6d8538", size = 134243, upload-time = "2025-01-17T05:05:58.706Z" }, + { url = "https://files.pythonhosted.org/packages/46/c1/c2037af2c44996d7bde84eb1c9e42308cc84b547dd6da7f8a8bea33007e1/tree_sitter-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ddb113e6b8b3e3b199695b1492a47d87d06c538e63050823d90ef13cac585fd", size = 562030, upload-time = "2025-01-17T05:05:59.825Z" }, + { url = "https://files.pythonhosted.org/packages/4c/aa/2fb4d81886df958e6ec7e370895f7106d46d0bbdcc531768326124dc8972/tree_sitter-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01ea01a7003b88b92f7f875da6ba9d5d741e0c84bb1bd92c503c0eecd0ee6409", size = 575585, upload-time = "2025-01-17T05:06:01.045Z" }, + { url = "https://files.pythonhosted.org/packages/e3/3c/5f997ce34c0d1b744e0f0c0757113bdfc173a2e3dadda92c751685cfcbd1/tree_sitter-0.24.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:464fa5b2cac63608915a9de8a6efd67a4da1929e603ea86abaeae2cb1fe89921", size = 578203, upload-time = "2025-01-17T05:06:02.255Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1f/f2bc7fa7c3081653ea4f2639e06ff0af4616c47105dbcc0746137da7620d/tree_sitter-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:3b1f3cbd9700e1fba0be2e7d801527e37c49fc02dc140714669144ef6ab58dce", size = 120147, upload-time = "2025-01-17T05:06:05.233Z" }, + { url = "https://files.pythonhosted.org/packages/c0/4c/9add771772c4d72a328e656367ca948e389432548696a3819b69cdd6f41e/tree_sitter-0.24.0-cp311-cp311-win_arm64.whl", hash = "sha256:f3f08a2ca9f600b3758792ba2406971665ffbad810847398d180c48cee174ee2", size = 108302, upload-time = "2025-01-17T05:06:07.487Z" }, + { url = "https://files.pythonhosted.org/packages/e9/57/3a590f287b5aa60c07d5545953912be3d252481bf5e178f750db75572bff/tree_sitter-0.24.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:14beeff5f11e223c37be7d5d119819880601a80d0399abe8c738ae2288804afc", size = 140788, upload-time = "2025-01-17T05:06:08.492Z" }, + { url = "https://files.pythonhosted.org/packages/61/0b/fc289e0cba7dbe77c6655a4dd949cd23c663fd62a8b4d8f02f97e28d7fe5/tree_sitter-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26a5b130f70d5925d67b47db314da209063664585a2fd36fa69e0717738efaf4", size = 133945, upload-time = "2025-01-17T05:06:12.39Z" }, + { url = "https://files.pythonhosted.org/packages/86/d7/80767238308a137e0b5b5c947aa243e3c1e3e430e6d0d5ae94b9a9ffd1a2/tree_sitter-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fc5c3c26d83c9d0ecb4fc4304fba35f034b7761d35286b936c1db1217558b4e", size = 564819, upload-time = "2025-01-17T05:06:13.549Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b3/6c5574f4b937b836601f5fb556b24804b0a6341f2eb42f40c0e6464339f4/tree_sitter-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:772e1bd8c0931c866b848d0369b32218ac97c24b04790ec4b0e409901945dd8e", size = 579303, upload-time = "2025-01-17T05:06:16.685Z" }, + { url = "https://files.pythonhosted.org/packages/0a/f4/bd0ddf9abe242ea67cca18a64810f8af230fc1ea74b28bb702e838ccd874/tree_sitter-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:24a8dd03b0d6b8812425f3b84d2f4763322684e38baf74e5bb766128b5633dc7", size = 581054, upload-time = "2025-01-17T05:06:19.439Z" }, + { url = "https://files.pythonhosted.org/packages/8c/1c/ff23fa4931b6ef1bbeac461b904ca7e49eaec7e7e5398584e3eef836ec96/tree_sitter-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:f9e8b1605ab60ed43803100f067eed71b0b0e6c1fb9860a262727dbfbbb74751", size = 120221, upload-time = "2025-01-17T05:06:20.654Z" }, + { url = "https://files.pythonhosted.org/packages/b2/2a/9979c626f303177b7612a802237d0533155bf1e425ff6f73cc40f25453e2/tree_sitter-0.24.0-cp312-cp312-win_arm64.whl", hash = "sha256:f733a83d8355fc95561582b66bbea92ffd365c5d7a665bc9ebd25e049c2b2abb", size = 108234, upload-time = "2025-01-17T05:06:21.713Z" }, + { url = "https://files.pythonhosted.org/packages/61/cd/2348339c85803330ce38cee1c6cbbfa78a656b34ff58606ebaf5c9e83bd0/tree_sitter-0.24.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0d4a6416ed421c4210f0ca405a4834d5ccfbb8ad6692d4d74f7773ef68f92071", size = 140781, upload-time = "2025-01-17T05:06:22.82Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a3/1ea9d8b64e8dcfcc0051028a9c84a630301290995cd6e947bf88267ef7b1/tree_sitter-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e0992d483677e71d5c5d37f30dfb2e3afec2f932a9c53eec4fca13869b788c6c", size = 133928, upload-time = "2025-01-17T05:06:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/fe/ae/55c1055609c9428a4aedf4b164400ab9adb0b1bf1538b51f4b3748a6c983/tree_sitter-0.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57277a12fbcefb1c8b206186068d456c600dbfbc3fd6c76968ee22614c5cd5ad", size = 564497, upload-time = "2025-01-17T05:06:27.53Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d0/f2ffcd04882c5aa28d205a787353130cbf84b2b8a977fd211bdc3b399ae3/tree_sitter-0.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25fa22766d63f73716c6fec1a31ee5cf904aa429484256bd5fdf5259051ed74", size = 578917, upload-time = "2025-01-17T05:06:31.057Z" }, + { url = "https://files.pythonhosted.org/packages/af/82/aebe78ea23a2b3a79324993d4915f3093ad1af43d7c2208ee90be9273273/tree_sitter-0.24.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7d5d9537507e1c8c5fa9935b34f320bfec4114d675e028f3ad94f11cf9db37b9", size = 581148, upload-time = "2025-01-17T05:06:32.409Z" }, + { url = "https://files.pythonhosted.org/packages/a1/b4/6b0291a590c2b0417cfdb64ccb8ea242f270a46ed429c641fbc2bfab77e0/tree_sitter-0.24.0-cp313-cp313-win_amd64.whl", hash = "sha256:f58bb4956917715ec4d5a28681829a8dad5c342cafd4aea269f9132a83ca9b34", size = 120207, upload-time = "2025-01-17T05:06:34.841Z" }, + { url = "https://files.pythonhosted.org/packages/a8/18/542fd844b75272630229c9939b03f7db232c71a9d82aadc59c596319ea6a/tree_sitter-0.24.0-cp313-cp313-win_arm64.whl", hash = "sha256:23641bd25dcd4bb0b6fa91b8fb3f46cc9f1c9f475efe4d536d3f1f688d1b84c8", size = 108232, upload-time = "2025-01-17T05:06:35.831Z" }, +] + +[[package]] +name = "tree-sitter-c" +version = "0.23.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/27/27/254ebffa4066b3073dddee00c1915893794f5cbf938335c1cc926cd32385/tree_sitter_c-0.23.4.tar.gz", hash = "sha256:9215c7888dd019038f162ea5646178f6e129cd2b49fc506d14becf5e426121d7", size = 223089, upload-time = "2024-12-15T22:24:42.833Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/a9/41e5177fd9309bf142d6772f6885e6a93baa0ad40f17c7a4144ba1275c9c/tree_sitter_c-0.23.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2c92c0571b36b6da06f8882f34151dc11e67a493e9101cc0026a16da27709c05", size = 80812, upload-time = "2024-12-15T22:24:26.318Z" }, + { url = "https://files.pythonhosted.org/packages/90/99/cf0a3a8a661fffc7f6843cafbbc1887c47e1a79f751cf9c88002008c8eae/tree_sitter_c-0.23.4-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:98c285a23bf4fb6fb34140d6ea0f0d25d0a93e0d93692f9dffe3db6d1fe08534", size = 85813, upload-time = "2024-12-15T22:24:28.438Z" }, + { url = "https://files.pythonhosted.org/packages/01/c1/d346a08e05223bff3cea08a8f96d685d19bc2c022fde719bfd3e9f6aaaac/tree_sitter_c-0.23.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e42a3519825ca59c91b2b7aec08dd3c89e02690c7b315d54a1e1743f9be3f15", size = 110085, upload-time = "2024-12-15T22:24:30.823Z" }, + { url = "https://files.pythonhosted.org/packages/a8/88/b7d395038b109d42a4682b9f3d72f8e02de8f7c7caf9ad2b289991f1ac19/tree_sitter_c-0.23.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15c7588c3d95872328019073a8d5eaf7c2691b4d4ef0393a0168399b2ad2356", size = 98075, upload-time = "2024-12-15T22:24:32.946Z" }, + { url = "https://files.pythonhosted.org/packages/e8/12/754a8166d3860cdd614bf7d117c94a740ce1ab1ab2ba766321249909e7b1/tree_sitter_c-0.23.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:013403e74765d74e523f380f9df8f3d99e9fe94132a3fc0c8b29cba538a7b2bf", size = 94071, upload-time = "2024-12-15T22:24:34.974Z" }, + { url = "https://files.pythonhosted.org/packages/14/da/2f97b96f081d6ac9b37c87c9d8e5c0ff5948802562ae28b1a58afd8dec1d/tree_sitter_c-0.23.4-cp39-abi3-win_amd64.whl", hash = "sha256:a4d7bdeaca8f1da72352a945853f56aa5d34e7bc22569ec5bda5d7c1a04e5b0f", size = 84483, upload-time = "2024-12-15T22:24:37.052Z" }, + { url = "https://files.pythonhosted.org/packages/d9/33/0d3b72634e2f34e64b07aaf100207cf3d01e32d814e72e144af0a0e785ad/tree_sitter_c-0.23.4-cp39-abi3-win_arm64.whl", hash = "sha256:edd36e12cc79b8b5bbc81fc336ff7d2577d0fe16afd18163c9aff7ae3ff69e15", size = 82482, upload-time = "2024-12-15T22:24:40.758Z" }, +] + +[[package]] +name = "tree-sitter-javascript" +version = "0.23.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/dc/1c55c33cc6bbe754359b330534cf9f261c1b9b2c26ddf23aef3c5fa67759/tree_sitter_javascript-0.23.1.tar.gz", hash = "sha256:b2059ce8b150162cda05a457ca3920450adbf915119c04b8c67b5241cd7fcfed", size = 110058, upload-time = "2024-11-10T05:40:42.357Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/d3/c67d7d49967344b51208ad19f105233be1afdf07d3dcb35b471900265227/tree_sitter_javascript-0.23.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6ca583dad4bd79d3053c310b9f7208cd597fd85f9947e4ab2294658bb5c11e35", size = 59333, upload-time = "2024-11-10T05:40:31.988Z" }, + { url = "https://files.pythonhosted.org/packages/a5/db/ea0ee1547679d1750e80a0c4bc60b3520b166eeaf048764cfdd1ba3fd5e5/tree_sitter_javascript-0.23.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:94100e491a6a247aa4d14caf61230c171b6376c863039b6d9cd71255c2d815ec", size = 61071, upload-time = "2024-11-10T05:40:33.458Z" }, + { url = "https://files.pythonhosted.org/packages/67/6e/07c4857e08be37bfb55bfb269863df8ec908b2f6a3f1893cd852b893ecab/tree_sitter_javascript-0.23.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a6bc1055b061c5055ec58f39ee9b2e9efb8e6e0ae970838af74da0afb811f0a", size = 96999, upload-time = "2024-11-10T05:40:34.869Z" }, + { url = "https://files.pythonhosted.org/packages/5f/f5/4de730afe8b9422845bc2064020a8a8f49ebd1695c04261c38d1b3e3edec/tree_sitter_javascript-0.23.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:056dc04fb6b24293f8c5fec43c14e7e16ba2075b3009c643abf8c85edc4c7c3c", size = 94020, upload-time = "2024-11-10T05:40:35.735Z" }, + { url = "https://files.pythonhosted.org/packages/77/0a/f980520da86c4eff8392867840a945578ef43372c9d4a37922baa6b121fe/tree_sitter_javascript-0.23.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a11ca1c0f736da42967586b568dff8a465ee148a986c15ebdc9382806e0ce871", size = 92927, upload-time = "2024-11-10T05:40:37.92Z" }, + { url = "https://files.pythonhosted.org/packages/ff/5c/36a98d512aa1d1082409d6b7eda5d26b820bd4477a54100ad9f62212bc55/tree_sitter_javascript-0.23.1-cp39-abi3-win_amd64.whl", hash = "sha256:041fa22b34250ea6eb313d33104d5303f79504cb259d374d691e38bbdc49145b", size = 58824, upload-time = "2024-11-10T05:40:39.903Z" }, + { url = "https://files.pythonhosted.org/packages/dc/79/ceb21988e6de615355a63eebcf806cd2a0fe875bec27b429d58b63e7fb5f/tree_sitter_javascript-0.23.1-cp39-abi3-win_arm64.whl", hash = "sha256:eb28130cd2fb30d702d614cbf61ef44d1c7f6869e7d864a9cc17111e370be8f7", size = 57027, upload-time = "2024-11-10T05:40:40.841Z" }, +] + +[[package]] +name = "tree-sitter-python" +version = "0.23.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/30/6766433b31be476fda6569a3a374c2220e45ffee0bff75460038a57bf23b/tree_sitter_python-0.23.6.tar.gz", hash = "sha256:354bfa0a2f9217431764a631516f85173e9711af2c13dbd796a8815acfe505d9", size = 155868, upload-time = "2024-12-22T23:09:55.918Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/67/577a02acae5f776007c924ca86ef14c19c12e71de0aa9d2a036f3c248e7b/tree_sitter_python-0.23.6-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:28fbec8f74eeb2b30292d97715e60fac9ccf8a8091ce19b9d93e9b580ed280fb", size = 74361, upload-time = "2024-12-22T23:09:42.37Z" }, + { url = "https://files.pythonhosted.org/packages/d2/a6/194b3625a7245c532ad418130d63077ce6cd241152524152f533e4d6edb0/tree_sitter_python-0.23.6-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:680b710051b144fedf61c95197db0094f2245e82551bf7f0c501356333571f7a", size = 76436, upload-time = "2024-12-22T23:09:43.566Z" }, + { url = "https://files.pythonhosted.org/packages/d0/62/1da112689d6d282920e62c40e67ab39ea56463b0e7167bfc5e81818a770e/tree_sitter_python-0.23.6-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a9dcef55507b6567207e8ee0a6b053d0688019b47ff7f26edc1764b7f4dc0a4", size = 112060, upload-time = "2024-12-22T23:09:44.721Z" }, + { url = "https://files.pythonhosted.org/packages/5d/62/c9358584c96e38318d69b6704653684fd8467601f7b74e88aa44f4e6903f/tree_sitter_python-0.23.6-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29dacdc0cd2f64e55e61d96c6906533ebb2791972bec988450c46cce60092f5d", size = 112338, upload-time = "2024-12-22T23:09:48.323Z" }, + { url = "https://files.pythonhosted.org/packages/1a/58/c5e61add45e34fb8ecbf057c500bae9d96ed7c9ca36edb7985da8ae45526/tree_sitter_python-0.23.6-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7e048733c36f564b379831689006801feb267d8194f9e793fbb395ef1723335d", size = 109382, upload-time = "2024-12-22T23:09:49.49Z" }, + { url = "https://files.pythonhosted.org/packages/e9/f3/9b30893cae9b3811fe652dc6f90aaadfda12ae0b2757f5722fc7266f423c/tree_sitter_python-0.23.6-cp39-abi3-win_amd64.whl", hash = "sha256:a24027248399fb41594b696f929f9956828ae7cc85596d9f775e6c239cd0c2be", size = 75904, upload-time = "2024-12-22T23:09:51.597Z" }, + { url = "https://files.pythonhosted.org/packages/87/cb/ce35a65f83a47b510d8a2f1eddf3bdbb0d57aabc87351c8788caf3309f76/tree_sitter_python-0.23.6-cp39-abi3-win_arm64.whl", hash = "sha256:71334371bd73d5fe080aed39fbff49ed8efb9506edebe16795b0c7567ed6a272", size = 73649, upload-time = "2024-12-22T23:09:53.71Z" }, +] + +[[package]] +name = "tree-sitter-typescript" +version = "0.23.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/fc/bb52958f7e399250aee093751e9373a6311cadbe76b6e0d109b853757f35/tree_sitter_typescript-0.23.2.tar.gz", hash = "sha256:7b167b5827c882261cb7a50dfa0fb567975f9b315e87ed87ad0a0a3aedb3834d", size = 773053, upload-time = "2024-11-11T02:36:11.396Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/95/4c00680866280e008e81dd621fd4d3f54aa3dad1b76b857a19da1b2cc426/tree_sitter_typescript-0.23.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3cd752d70d8e5371fdac6a9a4df9d8924b63b6998d268586f7d374c9fba2a478", size = 286677, upload-time = "2024-11-11T02:35:58.839Z" }, + { url = "https://files.pythonhosted.org/packages/8f/2f/1f36fda564518d84593f2740d5905ac127d590baf5c5753cef2a88a89c15/tree_sitter_typescript-0.23.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:c7cc1b0ff5d91bac863b0e38b1578d5505e718156c9db577c8baea2557f66de8", size = 302008, upload-time = "2024-11-11T02:36:00.733Z" }, + { url = "https://files.pythonhosted.org/packages/96/2d/975c2dad292aa9994f982eb0b69cc6fda0223e4b6c4ea714550477d8ec3a/tree_sitter_typescript-0.23.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b1eed5b0b3a8134e86126b00b743d667ec27c63fc9de1b7bb23168803879e31", size = 351987, upload-time = "2024-11-11T02:36:02.669Z" }, + { url = "https://files.pythonhosted.org/packages/49/d1/a71c36da6e2b8a4ed5e2970819b86ef13ba77ac40d9e333cb17df6a2c5db/tree_sitter_typescript-0.23.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e96d36b85bcacdeb8ff5c2618d75593ef12ebaf1b4eace3477e2bdb2abb1752c", size = 344960, upload-time = "2024-11-11T02:36:04.443Z" }, + { url = "https://files.pythonhosted.org/packages/7f/cb/f57b149d7beed1a85b8266d0c60ebe4c46e79c9ba56bc17b898e17daf88e/tree_sitter_typescript-0.23.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8d4f0f9bcb61ad7b7509d49a1565ff2cc363863644a234e1e0fe10960e55aea0", size = 340245, upload-time = "2024-11-11T02:36:06.473Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ab/dd84f0e2337296a5f09749f7b5483215d75c8fa9e33738522e5ed81f7254/tree_sitter_typescript-0.23.2-cp39-abi3-win_amd64.whl", hash = "sha256:3f730b66396bc3e11811e4465c41ee45d9e9edd6de355a58bbbc49fa770da8f9", size = 278015, upload-time = "2024-11-11T02:36:07.631Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e4/81f9a935789233cf412a0ed5fe04c883841d2c8fb0b7e075958a35c65032/tree_sitter_typescript-0.23.2-cp39-abi3-win_arm64.whl", hash = "sha256:05db58f70b95ef0ea126db5560f3775692f609589ed6f8dd0af84b7f19f1cbb7", size = 274052, upload-time = "2024-11-11T02:36:09.514Z" }, +] + +[[package]] +name = "triton" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/6e/676ab5019b4dde8b9b7bab71245102fc02778ef3df48218b298686b9ffd6/triton-3.5.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5fc53d849f879911ea13f4a877243afc513187bc7ee92d1f2c0f1ba3169e3c94", size = 170320692, upload-time = "2025-11-11T17:40:46.074Z" }, + { url = "https://files.pythonhosted.org/packages/b0/72/ec90c3519eaf168f22cb1757ad412f3a2add4782ad3a92861c9ad135d886/triton-3.5.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:61413522a48add32302353fdbaaf92daaaab06f6b5e3229940d21b5207f47579", size = 170425802, upload-time = "2025-11-11T17:40:53.209Z" }, + { url = "https://files.pythonhosted.org/packages/f2/50/9a8358d3ef58162c0a415d173cfb45b67de60176e1024f71fbc4d24c0b6d/triton-3.5.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d2c6b915a03888ab931a9fd3e55ba36785e1fe70cbea0b40c6ef93b20fc85232", size = 170470207, upload-time = "2025-11-11T17:41:00.253Z" }, + { url = "https://files.pythonhosted.org/packages/27/46/8c3bbb5b0a19313f50edcaa363b599e5a1a5ac9683ead82b9b80fe497c8d/triton-3.5.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3f4346b6ebbd4fad18773f5ba839114f4826037c9f2f34e0148894cd5dd3dba", size = 170470410, upload-time = "2025-11-11T17:41:06.319Z" }, + { url = "https://files.pythonhosted.org/packages/37/92/e97fcc6b2c27cdb87ce5ee063d77f8f26f19f06916aa680464c8104ef0f6/triton-3.5.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0b4d2c70127fca6a23e247f9348b8adde979d2e7a20391bfbabaac6aebc7e6a8", size = 170579924, upload-time = "2025-11-11T17:41:12.455Z" }, + { url = "https://files.pythonhosted.org/packages/a4/e6/c595c35e5c50c4bc56a7bac96493dad321e9e29b953b526bbbe20f9911d0/triton-3.5.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0637b1efb1db599a8e9dc960d53ab6e4637db7d4ab6630a0974705d77b14b60", size = 170480488, upload-time = "2025-11-11T17:41:18.222Z" }, + { url = "https://files.pythonhosted.org/packages/16/b5/b0d3d8b901b6a04ca38df5e24c27e53afb15b93624d7fd7d658c7cd9352a/triton-3.5.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bac7f7d959ad0f48c0e97d6643a1cc0fd5786fe61cb1f83b537c6b2d54776478", size = 170582192, upload-time = "2025-11-11T17:41:23.963Z" }, +] + [[package]] name = "ty" -version = "0.0.1a29" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/e1/1a75c95fbb284954b2f6fbbf7fbf1d35f531f50ebe93b23cf53145d1bc1d/ty-0.0.1a29.tar.gz", hash = "sha256:43bb55fd467a057880d62ad4bbb048223fd4fba7d8e4d7d5372a0f4881da83fe", size = 4624122, upload-time = "2025-11-28T20:23:51.728Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/be/49/35034e045ef27ebf220de742c092b1982902740c3ca151ad2072035df77a/ty-0.0.1a29-py3-none-linux_armv6l.whl", hash = "sha256:0276e8e0779046d464dec8415c240cc76b22e22c8c22c227dec2d79395f037be", size = 9581368, upload-time = "2025-11-28T20:24:07.099Z" }, - { url = "https://files.pythonhosted.org/packages/c4/76/350ab2592984907a7ed4a887b4e041ce4afe002ca0dff796c81e06b66e1d/ty-0.0.1a29-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:4a47afe9be12667ff521a0f2ed5a0873fb85c1f8330a6680e0e3366f016e3e42", size = 9371567, upload-time = "2025-11-28T20:23:49.634Z" }, - { url = "https://files.pythonhosted.org/packages/7d/f6/27977a0206c9914a2b2be5a96c155cd38cf976492388b58ad09e14c42050/ty-0.0.1a29-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c0041f1c36fac2099bc61aa8cdad18d890ceb15544ba33f522f9967372fb3b82", size = 8889114, upload-time = "2025-11-28T20:23:42.492Z" }, - { url = "https://files.pythonhosted.org/packages/34/1b/4f3c20ae1dac6cdc1c42f020a9fd37733f695bff13c4759ba4d84d1dcd51/ty-0.0.1a29-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46ed30fafdde93968f033bbdd3576f068ebe979c65fd2fcc166b1cff00097e5c", size = 9172880, upload-time = "2025-11-28T20:23:53.906Z" }, - { url = "https://files.pythonhosted.org/packages/fb/76/a671e3e560f37a3f82979637ec362d66363a94e5f23c99cf4f16a9fc737b/ty-0.0.1a29-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3814a7bd8b38d761ea621bf9ae7d1d38a7dde514d9f0e07fb2e70ea5aeeea0f5", size = 9377768, upload-time = "2025-11-28T20:24:11.365Z" }, - { url = "https://files.pythonhosted.org/packages/2b/f3/44b03bb0d96451c473a15bb2ab1dbd828b73f2f3c98f8991c8ac2f8a8083/ty-0.0.1a29-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:466f9eedee4fe17f6d1da352e5174374c935facf3dd4a6c6d301891864ac1797", size = 9756864, upload-time = "2025-11-28T20:24:03.523Z" }, - { url = "https://files.pythonhosted.org/packages/0f/75/056a750c4db3326825e0ba009b018892fff47b56efee8e648e01410f9199/ty-0.0.1a29-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:dc47493923c850ebc3a545b4d738da9924361cc9a9c67fbf4b49786462c5998e", size = 10390516, upload-time = "2025-11-28T20:23:44.891Z" }, - { url = "https://files.pythonhosted.org/packages/9d/1b/e2a764f84cf71ccb65671ce7678fa787d1a73bfffa4804f443c642c691aa/ty-0.0.1a29-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91acf7c35f655c1cb38b7029dc09330fccbc5d18fffb0ecbd7f218518d5fb8d3", size = 10135269, upload-time = "2025-11-28T20:23:59.584Z" }, - { url = "https://files.pythonhosted.org/packages/c9/46/6a7db14e584bd1b3da6b21a02190e218ddc3720a5b699b56039d142c4674/ty-0.0.1a29-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a3260e3524d038c08234d77c0b8aecd8c12096ec6df153960591dedbd5688078", size = 10161544, upload-time = "2025-11-28T20:23:47.514Z" }, - { url = "https://files.pythonhosted.org/packages/52/9e/04dfd308788117fe04cc6fe85612ea2945d852c1c9c80150f5aae0d7fe0c/ty-0.0.1a29-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc361cc48f901727a5f7a05cede0102cd4d1eba4aebc6269cb8ec7db23e6c86", size = 9706468, upload-time = "2025-11-28T20:24:13.565Z" }, - { url = "https://files.pythonhosted.org/packages/3f/86/3c0e21b7d7a4f721f5eb35542ed672c790ef3c0570f5665ff26bad4f3c69/ty-0.0.1a29-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8ef39318e49f0cf7f7d1de79003c0939749dc0bb5e3a54c8c3a15d0c6950dc8f", size = 9142491, upload-time = "2025-11-28T20:24:01.311Z" }, - { url = "https://files.pythonhosted.org/packages/0e/a8/55ce8472174efe1d53a6f25c8e325894e121471ecf4332957c941a503cef/ty-0.0.1a29-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:c6f4288b96d37d714542f2e8475d3822be427ebc573a85fc374c1eda7f0381fc", size = 9405392, upload-time = "2025-11-28T20:23:56.368Z" }, - { url = "https://files.pythonhosted.org/packages/46/a6/2889a049257b0dd5c41ee0ca4c0081959b46184338ed378743f45c3d997d/ty-0.0.1a29-py3-none-musllinux_1_2_i686.whl", hash = "sha256:e0fb272452129ba2cd1445a596a4a85c94ec52cb58fb800ed19a3056d8aa84d5", size = 9516865, upload-time = "2025-11-28T20:24:05.247Z" }, - { url = "https://files.pythonhosted.org/packages/50/78/35e5bdce73d9f631a14cb838b024377a5c7fcc73a2254a993e9060247d52/ty-0.0.1a29-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:fb6d3ac94a95e86d6f3bc9e39b8e7a3e300be4224b1ac7984ccb3136dfa41d77", size = 9815887, upload-time = "2025-11-28T20:24:08.895Z" }, - { url = "https://files.pythonhosted.org/packages/95/f9/6bb402efa8ad252d5e6b39eeb2a920ef85792c9602617bf391df7c40313a/ty-0.0.1a29-py3-none-win32.whl", hash = "sha256:fb4df9f8bf401a42019526c0da72e26de1b9dab3188d1df59ec6ecbd15edce4a", size = 9029263, upload-time = "2025-11-28T20:24:18.057Z" }, - { url = "https://files.pythonhosted.org/packages/be/f0/3e314ee1a369eba776f3f8e9fac535b9703127097b7e52de5aba025d5c99/ty-0.0.1a29-py3-none-win_amd64.whl", hash = "sha256:3908a8b12616c52520bc7dc1a14732c3b86181125b1326444fc37049d2a20c37", size = 9875790, upload-time = "2025-11-28T20:24:15.884Z" }, - { url = "https://files.pythonhosted.org/packages/af/c2/37d81529242602cd486cd112a93312874948d276515e5fb0718b0f99758d/ty-0.0.1a29-py3-none-win_arm64.whl", hash = "sha256:999ae9077f153fd1804b840d21d904850b9047e361a6a67da8d06dadf94a189a", size = 9373509, upload-time = "2025-11-28T20:24:19.941Z" }, +version = "0.0.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/dc/b607f00916f5a7c52860b84a66dc17bc6988e8445e96b1d6e175a3837397/ty-0.0.13.tar.gz", hash = "sha256:7a1d135a400ca076407ea30012d1f75419634160ed3b9cad96607bf2956b23b3", size = 4999183, upload-time = "2026-01-21T13:21:16.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/df/3632f1918f4c0a33184f107efc5d436ab6da147fd3d3b94b3af6461efbf4/ty-0.0.13-py3-none-linux_armv6l.whl", hash = "sha256:1b2b8e02697c3a94c722957d712a0615bcc317c9b9497be116ef746615d892f2", size = 9993501, upload-time = "2026-01-21T13:21:26.628Z" }, + { url = "https://files.pythonhosted.org/packages/92/87/6a473ced5ac280c6ce5b1627c71a8a695c64481b99aabc798718376a441e/ty-0.0.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:f15cdb8e233e2b5adfce673bb21f4c5e8eaf3334842f7eea3c70ac6fda8c1de5", size = 9860986, upload-time = "2026-01-21T13:21:24.425Z" }, + { url = "https://files.pythonhosted.org/packages/5d/9b/d89ae375cf0a7cd9360e1164ce017f8c753759be63b6a11ed4c944abe8c6/ty-0.0.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:0819e89ac9f0d8af7a062837ce197f0461fee2fc14fd07e2c368780d3a397b73", size = 9350748, upload-time = "2026-01-21T13:21:28.502Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a6/9ad58518056fab344b20c0bb2c1911936ebe195318e8acc3bc45ac1c6b6b/ty-0.0.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1de79f481084b7cc7a202ba0d7a75e10970d10ffa4f025b23f2e6b7324b74886", size = 9849884, upload-time = "2026-01-21T13:21:21.886Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c3/8add69095fa179f523d9e9afcc15a00818af0a37f2b237a9b59bc0046c34/ty-0.0.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4fb2154cff7c6e95d46bfaba283c60642616f20d73e5f96d0c89c269f3e1bcec", size = 9822975, upload-time = "2026-01-21T13:21:14.292Z" }, + { url = "https://files.pythonhosted.org/packages/a4/05/4c0927c68a0a6d43fb02f3f0b6c19c64e3461dc8ed6c404dde0efb8058f7/ty-0.0.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00be58d89337c27968a20d58ca553458608c5b634170e2bec82824c2e4cf4d96", size = 10294045, upload-time = "2026-01-21T13:21:30.505Z" }, + { url = "https://files.pythonhosted.org/packages/b4/86/6dc190838aba967557fe0bfd494c595d00b5081315a98aaf60c0e632aaeb/ty-0.0.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72435eade1fa58c6218abb4340f43a6c3ff856ae2dc5722a247d3a6dd32e9737", size = 10916460, upload-time = "2026-01-21T13:21:07.788Z" }, + { url = "https://files.pythonhosted.org/packages/04/40/9ead96b7c122e1109dfcd11671184c3506996bf6a649306ec427e81d9544/ty-0.0.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:77a548742ee8f621d718159e7027c3b555051d096a49bb580249a6c5fc86c271", size = 10597154, upload-time = "2026-01-21T13:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/aa/7d/e832a2c081d2be845dc6972d0c7998914d168ccbc0b9c86794419ab7376e/ty-0.0.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da067c57c289b7cf914669704b552b6207c2cc7f50da4118c3e12388642e6b3f", size = 10410710, upload-time = "2026-01-21T13:21:12.388Z" }, + { url = "https://files.pythonhosted.org/packages/31/e3/898be3a96237a32f05c4c29b43594dc3b46e0eedfe8243058e46153b324f/ty-0.0.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d1b50a01fffa140417fca5a24b658fbe0734074a095d5b6f0552484724474343", size = 9826299, upload-time = "2026-01-21T13:21:00.845Z" }, + { url = "https://files.pythonhosted.org/packages/bb/eb/db2d852ce0ed742505ff18ee10d7d252f3acfd6fc60eca7e9c7a0288a6d8/ty-0.0.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:0f33c46f52e5e9378378eca0d8059f026f3c8073ace02f7f2e8d079ddfe5207e", size = 9831610, upload-time = "2026-01-21T13:21:05.842Z" }, + { url = "https://files.pythonhosted.org/packages/9e/61/149f59c8abaddcbcbb0bd13b89c7741ae1c637823c5cf92ed2c644fcadef/ty-0.0.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:168eda24d9a0b202cf3758c2962cc295878842042b7eca9ed2965259f59ce9f2", size = 9978885, upload-time = "2026-01-21T13:21:10.306Z" }, + { url = "https://files.pythonhosted.org/packages/a0/cd/026d4e4af60a80918a8d73d2c42b8262dd43ab2fa7b28d9743004cb88d57/ty-0.0.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d4917678b95dc8cb399cc459fab568ba8d5f0f33b7a94bf840d9733043c43f29", size = 10506453, upload-time = "2026-01-21T13:20:56.633Z" }, + { url = "https://files.pythonhosted.org/packages/63/06/8932833a4eca2df49c997a29afb26721612de8078ae79074c8fe87e17516/ty-0.0.13-py3-none-win32.whl", hash = "sha256:c1f2ec40daa405508b053e5b8e440fbae5fdb85c69c9ab0ee078f8bc00eeec3d", size = 9433482, upload-time = "2026-01-21T13:20:58.717Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fd/e8d972d1a69df25c2cecb20ea50e49ad5f27a06f55f1f5f399a563e71645/ty-0.0.13-py3-none-win_amd64.whl", hash = "sha256:8b7b1ab9f187affbceff89d51076038363b14113be29bda2ddfa17116de1d476", size = 10319156, upload-time = "2026-01-21T13:21:03.266Z" }, + { url = "https://files.pythonhosted.org/packages/2d/c2/05fdd64ac003a560d4fbd1faa7d9a31d75df8f901675e5bed1ee2ceeff87/ty-0.0.13-py3-none-win_arm64.whl", hash = "sha256:1c9630333497c77bb9bcabba42971b96ee1f36c601dd3dcac66b4134f9fa38f0", size = 9808316, upload-time = "2026-01-21T13:20:54.053Z" }, ] [[package]] name = "typer" -version = "0.20.0" +version = "0.19.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -2586,9 +4839,9 @@ dependencies = [ { name = "shellingham" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8f/28/7c85c8032b91dbe79725b6f17d2fffc595dff06a35c7a30a37bef73a1ab4/typer-0.20.0.tar.gz", hash = "sha256:1aaf6494031793e4876fb0bacfa6a912b551cf43c1e63c800df8b1a866720c37", size = 106492, upload-time = "2025-10-20T17:03:49.445Z" } +sdist = { url = "https://files.pythonhosted.org/packages/21/ca/950278884e2ca20547ff3eb109478c6baf6b8cf219318e6bc4f666fad8e8/typer-0.19.2.tar.gz", hash = "sha256:9ad824308ded0ad06cc716434705f691d4ee0bfd0fb081839d2e426860e7fdca", size = 104755, upload-time = "2025-09-23T09:47:48.256Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/64/7713ffe4b5983314e9d436a90d5bd4f63b6054e2aca783a3cfc44cb95bbf/typer-0.20.0-py3-none-any.whl", hash = "sha256:5b463df6793ec1dca6213a3cf4c0f03bc6e322ac5e16e13ddd622a889489784a", size = 47028, upload-time = "2025-10-20T17:03:47.617Z" }, + { url = "https://files.pythonhosted.org/packages/00/22/35617eee79080a5d071d0f14ad698d325ee6b3bf824fc0467c03b30e7fa8/typer-0.19.2-py3-none-any.whl", hash = "sha256:755e7e19670ffad8283db353267cb81ef252f595aa6834a0d1ca9312d9326cb9", size = 46748, upload-time = "2025-09-23T09:47:46.777Z" }, ] [[package]] @@ -2616,11 +4869,15 @@ bedrock-runtime = [ [[package]] name = "types-aiobotocore" -version = "2.26.0.post1" +version = "3.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/25/1a/282cf6eec5ff6e9c9ddcf7009176554f22c0862d5daeb5bdc467571ef9ea/types_aiobotocore-2.26.0.post1.tar.gz", hash = "sha256:a0aadb9dfd10ecb2bca4b2eac59c71a7536b50145f3027aebf80084589252ed4", size = 13393, upload-time = "2025-11-30T08:20:42Z" } +dependencies = [ + { name = "botocore-stubs" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/78/6974958d6e8923f40a8a3cf3bedd448c28df4456f9e3c258c174d43cc1a4/types_aiobotocore-3.1.1.tar.gz", hash = "sha256:7974585e194939da2c70a7b628f6edb22642769a84e4f6c1aa53228ff3b8ae71", size = 86450, upload-time = "2026-01-21T02:18:21.203Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/70/0a/98364f7c1237af4ab30ae7adedb7afe6470e143347903e29f9b463c53314/types_aiobotocore-2.26.0.post1-py3-none-any.whl", hash = "sha256:de72760a09029ef74c92cf07e8081f5286d1d0f78a509e86b491d9aecb6a4f38", size = 22506, upload-time = "2025-11-30T08:20:40.634Z" }, + { url = "https://files.pythonhosted.org/packages/10/58/97c64543dce565272f67b13d55d2a80590e807974cc59620d7563372c194/types_aiobotocore-3.1.1-py3-none-any.whl", hash = "sha256:421577ec8c204dd33275ea14fa1656382fd29723a2cfac1247301b30252c5934", size = 54206, upload-time = "2026-01-21T02:18:15.36Z" }, ] [[package]] @@ -2658,11 +4915,11 @@ wheels = [ [[package]] name = "types-awscrt" -version = "0.29.1" +version = "0.31.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/68/a580122cf8e8ee1154ee8795241f1b1e097e91050af5e7f5f5c800194f7b/types_awscrt-0.29.1.tar.gz", hash = "sha256:545f100e17d7633aa1791f92a8a4716f8ee1fc7cc9ee98dd31676d6c5e07e733", size = 17787, upload-time = "2025-11-30T07:43:33.014Z" } +sdist = { url = "https://files.pythonhosted.org/packages/97/be/589b7bba42b5681a72bac4d714287afef4e1bb84d07c859610ff631d449e/types_awscrt-0.31.1.tar.gz", hash = "sha256:08b13494f93f45c1a92eb264755fce50ed0d1dc75059abb5e31670feb9a09724", size = 17839, upload-time = "2026-01-16T02:01:23.394Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/0e/69a9ca202a8543146e189962d7069b3ef241d48a544e192856045c0ea792/types_awscrt-0.29.1-py3-none-any.whl", hash = "sha256:f583bef3d42a307b3f3c02ef8d5d49fbec04e02bf3aacd3ada3953213c9150a7", size = 42394, upload-time = "2025-11-30T07:43:31.555Z" }, + { url = "https://files.pythonhosted.org/packages/5e/fd/ddca80617f230bd833f99b4fb959abebffd8651f520493cae2e96276b1bd/types_awscrt-0.31.1-py3-none-any.whl", hash = "sha256:7e4364ac635f72bd57f52b093883640b1448a6eded0ecbac6e900bf4b1e4777b", size = 42516, upload-time = "2026-01-16T02:01:21.637Z" }, ] [[package]] @@ -2676,15 +4933,15 @@ wheels = [ [[package]] name = "types-networkx" -version = "3.6.0.20251127" +version = "3.6.1.20251220" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8d/9a/c39cb9682cab54a7ae74787dad733b7510e05f411359c153879179ce793b/types_networkx-3.6.0.20251127.tar.gz", hash = "sha256:df8c81f66247e9dcdbdc4e9827990befeb7cb14f9cfb36d401b1ec4ab834a6cc", size = 73166, upload-time = "2025-11-27T03:04:36.729Z" } +sdist = { url = "https://files.pythonhosted.org/packages/07/e3/dcc20d645dc0631b0df263959b8dde49dc47ad3c0537d8958bfefe692380/types_networkx-3.6.1.20251220.tar.gz", hash = "sha256:caf95e0d7777b969e50ceeb2c430d9d4dfe6b7bdee43c42dc9879a2d4408a790", size = 73500, upload-time = "2025-12-20T03:07:47.933Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/63/46be846bb9ca52251bd42686cf0b820e895592f7d42ce1d0d70b6229e215/types_networkx-3.6.0.20251127-py3-none-any.whl", hash = "sha256:e83cd6b9ec381613a5f81f6020612989f77ebf4e501ce0e085e324a738d01143", size = 162436, upload-time = "2025-11-27T03:04:35.456Z" }, + { url = "https://files.pythonhosted.org/packages/65/e7/fe40cfe7ba384d1f46fee835eb7727a4ee2fd80021a69add9553197b69a1/types_networkx-3.6.1.20251220-py3-none-any.whl", hash = "sha256:417ccbe7841f335a4c2b8e7515c3bc97a00fb5f686f399a763ef64392b209eac", size = 162715, upload-time = "2025-12-20T03:07:46.882Z" }, ] [[package]] @@ -2705,13 +4962,25 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bd/e0/1eed384f02555dde685fff1a1ac805c1c7dcb6dd019c916fe659b1c1f9ec/types_pyyaml-6.0.12.20250915-py3-none-any.whl", hash = "sha256:e7d4d9e064e89a3b3cae120b4990cd370874d2bf12fa5f46c97018dd5d3c9ab6", size = 20338, upload-time = "2025-09-15T03:00:59.218Z" }, ] +[[package]] +name = "types-requests" +version = "2.32.4.20260107" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/f3/a0663907082280664d745929205a89d41dffb29e89a50f753af7d57d0a96/types_requests-2.32.4.20260107.tar.gz", hash = "sha256:018a11ac158f801bfa84857ddec1650750e393df8a004a8a9ae2a9bec6fcb24f", size = 23165, upload-time = "2026-01-07T03:20:54.091Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/12/709ea261f2bf91ef0a26a9eed20f2623227a8ed85610c1e54c5805692ecb/types_requests-2.32.4.20260107-py3-none-any.whl", hash = "sha256:b703fe72f8ce5b31ef031264fe9395cac8f46a04661a79f7ed31a80fb308730d", size = 20676, upload-time = "2026-01-07T03:20:52.929Z" }, +] + [[package]] name = "types-s3transfer" -version = "0.15.0" +version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/bf/b00dcbecb037c4999b83c8109b8096fe78f87f1266cadc4f95d4af196292/types_s3transfer-0.15.0.tar.gz", hash = "sha256:43a523e0c43a88e447dfda5f4f6b63bf3da85316fdd2625f650817f2b170b5f7", size = 14236, upload-time = "2025-11-21T21:16:26.553Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/64/42689150509eb3e6e82b33ee3d89045de1592488842ddf23c56957786d05/types_s3transfer-0.16.0.tar.gz", hash = "sha256:b4636472024c5e2b62278c5b759661efeb52a81851cde5f092f24100b1ecb443", size = 13557, upload-time = "2025-12-08T08:13:09.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/39/39a322d7209cc259e3e27c4d498129e9583a2f3a8aea57eb1a9941cb5e9e/types_s3transfer-0.15.0-py3-none-any.whl", hash = "sha256:1e617b14a9d3ce5be565f4b187fafa1d96075546b52072121f8fda8e0a444aed", size = 19702, upload-time = "2025-11-21T21:16:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/98/27/e88220fe6274eccd3bdf95d9382918716d312f6f6cef6a46332d1ee2feff/types_s3transfer-0.16.0-py3-none-any.whl", hash = "sha256:1c0cd111ecf6e21437cb410f5cddb631bfb2263b77ad973e79b9c6d0cb24e0ef", size = 19247, upload-time = "2025-12-08T08:13:08.426Z" }, ] [[package]] @@ -2750,25 +5019,25 @@ wheels = [ [[package]] name = "tzdata" -version = "2025.2" +version = "2025.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, ] [[package]] name = "urllib3" -version = "2.5.0" +version = "2.6.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, ] [[package]] name = "virtualenv" -version = "20.35.4" +version = "20.36.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, @@ -2776,9 +5045,9 @@ dependencies = [ { name = "platformdirs" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/20/28/e6f1a6f655d620846bd9df527390ecc26b3805a0c5989048c210e22c5ca9/virtualenv-20.35.4.tar.gz", hash = "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c", size = 6028799, upload-time = "2025-10-29T06:57:40.511Z" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/a3/4d310fa5f00863544e1d0f4de93bddec248499ccf97d4791bc3122c9d4f3/virtualenv-20.36.1.tar.gz", hash = "sha256:8befb5c81842c641f8ee658481e42641c68b5eab3521d8e092d18320902466ba", size = 6032239, upload-time = "2026-01-09T18:21:01.296Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl", hash = "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b", size = 6005095, upload-time = "2025-10-29T06:57:37.598Z" }, + { url = "https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl", hash = "sha256:575a8d6b124ef88f6f51d56d656132389f961062a9177016a50e4f507bbcc19f", size = 6008258, upload-time = "2026-01-09T18:20:59.425Z" }, ] [[package]] @@ -2909,6 +5178,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1f/f6/a933bd70f98e9cf3e08167fc5cd7aaaca49147e48411c0bd5ae701bb2194/wrapt-1.17.3-py3-none-any.whl", hash = "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22", size = 23591, upload-time = "2025-08-12T05:53:20.674Z" }, ] +[[package]] +name = "xlsxwriter" +version = "3.2.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/2c/c06ef49dc36e7954e55b802a8b231770d286a9758b3d936bd1e04ce5ba88/xlsxwriter-3.2.9.tar.gz", hash = "sha256:254b1c37a368c444eac6e2f867405cc9e461b0ed97a3233b2ac1e574efb4140c", size = 215940, upload-time = "2025-09-16T00:16:21.63Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/0c/3662f4a66880196a590b202f0db82d919dd2f89e99a27fadef91c4a33d41/xlsxwriter-3.2.9-py3-none-any.whl", hash = "sha256:9a5db42bc5dff014806c58a20b9eae7322a134abb6fce3c92c181bfb275ec5b3", size = 175315, upload-time = "2025-09-16T00:16:20.108Z" }, +] + [[package]] name = "yarl" version = "1.22.0" @@ -3036,7 +5314,10 @@ wheels = [ ] [[package]] -name = "yattag" -version = "1.16.1" +name = "zipp" +version = "3.23.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1c/1a/d3b2a2b8f843f5e7138471c4a5c9172ef62bb41239aa4371784b7448110c/yattag-1.16.1.tar.gz", hash = "sha256:baa8f254e7ea5d3e0618281ad2ff5610e0e5360b3608e695c29bfb3b29d051f4", size = 29069, upload-time = "2024-11-02T22:38:30.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +]