Showing preview only (1,152K chars total). Download the full file or copy to clipboard to get everything.
Repository: microsoft/rag-experiment-accelerator
Branch: development
Commit: 7ed0e6ef312b
Files: 242
Total size: 1.1 MB
Directory structure:
gitextract_gvj_8lac/
├── .coveragerc
├── .devcontainer/
│ ├── devcontainer.json
│ └── post-create.sh
├── .flake8
├── .github/
│ ├── actions/
│ │ └── configure_azureml_agent/
│ │ └── action.yml
│ ├── dependabot.yml
│ └── workflows/
│ ├── build_validation_workflow.yml
│ └── rag_exp_acc_ci.yml
├── .gitignore
├── .pre-commit-config.yaml
├── 01_index.py
├── 02_qa_generation.py
├── 03_querying.py
├── 04_evaluation.py
├── CODE_OF_CONDUCT.md
├── LICENSE
├── Makefile
├── README.md
├── SECURITY.md
├── SUPPORT.md
├── azure.yaml
├── azureml/
│ ├── eval.py
│ ├── index.py
│ ├── pipeline.py
│ └── query.py
├── config.sample.json
├── config.schema.json
├── cspell.json
├── data-ci/
│ └── docx/
│ └── sample-docx.docx
├── dev-requirements.txt
├── docs/
│ ├── azureml-pipeline.md
│ ├── configs-appendix.md
│ ├── environment-variables.md
│ ├── evaluation-metrics.md
│ ├── script-inputs-outputs.md
│ └── wsl.md
├── env_to_keyvault.py
├── experimental/
│ └── readme.md
├── images/
│ └── AzureMLPipeline.drawio
├── infra/
│ ├── abbreviations.json
│ ├── generate_arm_template.sh
│ ├── main.bicep
│ ├── main.bicepparam
│ ├── main.json
│ ├── network/
│ │ ├── azure_bastion.bicep
│ │ └── network_isolation.bicep
│ └── shared/
│ ├── cognitiveservices.bicep
│ ├── keyvault-secret.bicep
│ ├── keyvault.bicep
│ ├── machineLearning.bicep
│ ├── monitoring.bicep
│ ├── search-services.bicep
│ ├── storage.bicep
│ └── storekeys.bicep
├── promptflow/
│ └── rag-experiment-accelerator/
│ ├── README.md
│ ├── custom_environment/
│ │ ├── Dockerfile
│ │ ├── environment.yaml
│ │ └── rag_experiment_accelerator-0.9-py3-none-any.whl
│ ├── env_setup.md
│ ├── evaluation/
│ │ ├── evaluation.py
│ │ └── flow.dag.yaml
│ ├── flow.dag.yaml
│ ├── index/
│ │ ├── create_index.py
│ │ └── flow.dag.yaml
│ ├── qa_generation/
│ │ ├── flow.dag.yaml
│ │ └── generate_qa.py
│ ├── querying/
│ │ ├── flow.dag.yaml
│ │ └── querying.py
│ └── setup/
│ ├── flow.dag.yaml
│ └── setup_env.py
├── pyproject.toml
├── rag_experiment_accelerator/
│ ├── __init__.py
│ ├── artifact/
│ │ ├── __init__.py
│ │ ├── handlers/
│ │ │ ├── __init__.py
│ │ │ ├── artifact_handler.py
│ │ │ ├── exceptions.py
│ │ │ ├── query_output_handler.py
│ │ │ ├── tests/
│ │ │ │ ├── test_artifact_handler.py
│ │ │ │ └── test_query_output_handler.py
│ │ │ └── typing.py
│ │ └── models/
│ │ ├── __init__.py
│ │ └── query_output.py
│ ├── checkpoint/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── checkpoint.py
│ │ ├── checkpoint_decorator.py
│ │ ├── checkpoint_factory.py
│ │ ├── local_storage_checkpoint.py
│ │ ├── null_checkpoint.py
│ │ └── tests/
│ │ ├── test_checkpoint.py
│ │ ├── test_local_storage_checkpoint.py
│ │ └── test_null_checkpoint.py
│ ├── config/
│ │ ├── __init__.py
│ │ ├── base_config.py
│ │ ├── chunking_config.py
│ │ ├── config.py
│ │ ├── config_validator.py
│ │ ├── embedding_model_config.py
│ │ ├── environment.py
│ │ ├── eval_config.py
│ │ ├── index_config.py
│ │ ├── language_config.py
│ │ ├── openai_config.py
│ │ ├── path_config.py
│ │ ├── paths.py
│ │ ├── query_expansion.py
│ │ ├── rerank_config.py
│ │ ├── sampling_config.py
│ │ ├── search_config.py
│ │ └── tests/
│ │ ├── test_config.py
│ │ ├── test_config_validator.py
│ │ ├── test_environment.py
│ │ └── test_index_config.py
│ ├── data_assets/
│ │ ├── __init__.py
│ │ └── data_asset.py
│ ├── doc_loader/
│ │ ├── __init__.py
│ │ ├── customJsonLoader.py
│ │ ├── documentIntelligenceLoader.py
│ │ ├── documentLoader.py
│ │ ├── docxLoader.py
│ │ ├── htmlLoader.py
│ │ ├── jsonLoader.py
│ │ ├── markdownLoader.py
│ │ ├── pdfLoader.py
│ │ ├── structuredLoader.py
│ │ ├── tests/
│ │ │ ├── test_custom_html_loader.py
│ │ │ ├── test_custom_json_loader.py
│ │ │ ├── test_data/
│ │ │ │ ├── document_intelligence_response/
│ │ │ │ │ ├── multiple_pages.json
│ │ │ │ │ ├── simple_response.json
│ │ │ │ │ └── table_without_headers.json
│ │ │ │ └── json/
│ │ │ │ ├── data.bad.invalid_keys.json
│ │ │ │ ├── data.bad.not_a_list.json
│ │ │ │ └── data.valid.json
│ │ │ ├── test_document_intelligence_loader.py
│ │ │ └── test_docx_loader.py
│ │ └── textLoader.py
│ ├── embedding/
│ │ ├── __init__.py
│ │ ├── aoai_embedding_model.py
│ │ ├── embedding_model.py
│ │ ├── factory.py
│ │ ├── st_embedding_model.py
│ │ └── tests/
│ │ ├── test_aoai_embedding_model.py
│ │ ├── test_factory.py
│ │ └── test_st_embedding_model.py
│ ├── evaluation/
│ │ ├── LICENSE.txt
│ │ ├── __init__.py
│ │ ├── eval.py
│ │ ├── llm_based_metrics.py
│ │ ├── plain_metrics.py
│ │ ├── plot_metrics.py
│ │ ├── search_eval.py
│ │ ├── spacy_evaluator.py
│ │ ├── tests/
│ │ │ ├── test_llm_based_metrics.py
│ │ │ ├── test_plain_metrics.py
│ │ │ ├── test_search_eval.py
│ │ │ ├── test_spacy_evaluator.py
│ │ │ └── test_transformer_based_metrics.py
│ │ └── transformer_based_metrics.py
│ ├── ingest_data/
│ │ ├── __init__.py
│ │ ├── acs_ingest.py
│ │ └── tests/
│ │ └── test_acs_ingest.py
│ ├── init_Index/
│ │ ├── __init__.py
│ │ ├── create_index.py
│ │ └── tests/
│ │ └── test_create_index.py
│ ├── io/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── loader.py
│ │ ├── local/
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── loaders/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── jsonl_loader.py
│ │ │ │ ├── local_loader.py
│ │ │ │ └── tests/
│ │ │ │ ├── test_jsonl_loader.py
│ │ │ │ └── test_local_loader.py
│ │ │ ├── tests/
│ │ │ │ └── test_local_io_base.py
│ │ │ └── writers/
│ │ │ ├── __init__.py
│ │ │ ├── jsonl_writer.py
│ │ │ ├── local_writer.py
│ │ │ └── tests/
│ │ │ ├── test_jsonl_writer.py
│ │ │ └── test_local_writer.py
│ │ └── writer.py
│ ├── llm/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── prompt/
│ │ │ ├── __init__.py
│ │ │ ├── hyde_prompts.py
│ │ │ ├── instruction_prompts.py
│ │ │ ├── multiprompts.py
│ │ │ ├── prompt.py
│ │ │ ├── qna_prompts.py
│ │ │ ├── ragas_prompts.py
│ │ │ └── rerank_prompts.py
│ │ ├── prompts_text/
│ │ │ ├── do_need_multiple_prompt_instruction.txt
│ │ │ ├── generate_qna_long_multi_context.txt
│ │ │ ├── generate_qna_long_single_context.txt
│ │ │ ├── generate_qna_short_multi_context.txt
│ │ │ ├── generate_qna_short_single_context.txt
│ │ │ ├── generate_qna_short_single_context_no_cot.txt
│ │ │ ├── llm_answer_relevance_instruction.txt
│ │ │ ├── llm_context_precision_instruction.txt
│ │ │ ├── llm_context_recall_instruction.txt
│ │ │ ├── main_instruction_long.txt
│ │ │ ├── main_instruction_short.txt
│ │ │ ├── multiple_prompt_instruction.txt
│ │ │ ├── prompt_generate_hypothetical_answer.txt
│ │ │ ├── prompt_generate_hypothetical_document.txt
│ │ │ ├── prompt_generate_hypothetical_questions.txt
│ │ │ ├── prompt_instruction_entities.txt
│ │ │ ├── prompt_instruction_keywords.txt
│ │ │ ├── prompt_instruction_summary.txt
│ │ │ ├── prompt_instruction_title.txt
│ │ │ └── rerank_prompt_instruction.txt
│ │ ├── response_generator.py
│ │ └── tests/
│ │ └── test_response_generator.py
│ ├── nlp/
│ │ ├── __init__.py
│ │ ├── language_evaluator.py
│ │ ├── preprocess.py
│ │ └── tests/
│ │ ├── test_language_evaluator.py
│ │ └── test_preprocessor.py
│ ├── reranking/
│ │ ├── __init__.py
│ │ └── reranker.py
│ ├── run/
│ │ ├── evaluation.py
│ │ ├── index.py
│ │ ├── qa_generation.py
│ │ ├── querying.py
│ │ └── tests/
│ │ ├── data/
│ │ │ └── test_data.jsonl
│ │ ├── test_index.py
│ │ ├── test_qa_generation.py
│ │ └── test_querying.py
│ ├── sampling/
│ │ ├── __init__.py
│ │ ├── clustering.py
│ │ └── tests/
│ │ ├── data/
│ │ │ └── test1.txt
│ │ └── test_clustering.py
│ ├── search_type/
│ │ ├── __init__.py
│ │ ├── acs_search_methods.py
│ │ └── tests/
│ │ └── test_acs_search_methods.py
│ └── utils/
│ ├── __init__.py
│ ├── auth.py
│ ├── logging.py
│ └── timetook.py
├── requirements.txt
├── setup.cfg
└── setup.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .coveragerc
================================================
[run]
omit =
*/__init__.py
================================================
FILE: .devcontainer/devcontainer.json
================================================
{
"name": "RAG Experiment Accelerator",
"image": "mcr.microsoft.com/devcontainers/python:1-3.11-bullseye",
"features": {
"ghcr.io/devcontainers/features/azure-cli:1": {
"version": "latest"
},
"ghcr.io/azure/azure-dev/azd:latest": {}
},
"postCreateCommand": "./.devcontainer/post-create.sh",
"customizations": {
"vscode": {
"extensions": [
"github.vscode-pull-request-github",
"ms-vscode.azure-account",
"ms-python.python",
"ms-python.flake8",
"ms-azuretools.vscode-bicep",
"prompt-flow.prompt-flow",
"ms-azuretools.azure-dev",
"streetsidesoftware.code-spell-checker"
]
}
}
}
================================================
FILE: .devcontainer/post-create.sh
================================================
#!/bin/bash
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt
python -m spacy download en_core_web_sm
# install the rag-accelerator packages in editable mode (required for pre-commit to work properly with pytest)
pip install -e .
pre-commit install
================================================
FILE: .flake8
================================================
[flake8]
max-line-length = 120
extend-ignore = E203, E501
================================================
FILE: .github/actions/configure_azureml_agent/action.yml
================================================
name: Prepare build environment
description: Prepares build environment for python and prompt flow related workflow execution.
inputs:
versionSpec:
description: "The Python version to use in the environment."
default: "3.11"
runs:
using: composite
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: ${{ inputs.versionSpec }}
- name: Load all prompt flow and related dependencies
shell: bash
run: |
set -e # fail on error
python -m pip install --upgrade pip
python -m pip install .
================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 50
================================================
FILE: .github/workflows/build_validation_workflow.yml
================================================
name: Build validation
on:
workflow_call:
workflow_dispatch:
pull_request:
branches:
- main
- development
- prerelease
push:
branches:
- main
- development
- prerelease
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/development' && github.ref != 'refs/heads/main' && github.ref != 'refs/heads/prerelease' }}
jobs:
validate-code:
name: job for validating code and structure
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Load all build validation related dependencies
shell: bash
run: |
set -e # fail on error
python -m pip install --upgrade pip
python -m pip install -e . -r requirements.txt -r dev-requirements.txt
- name: Download spacy model
shell: bash
run: |
python -m spacy download en_core_web_sm
- name: Run flake
shell: bash
run: |
flake8 --extend-ignore=E501
- name: Execute Unit Tests
shell: bash
run: |
pytest . --cov=. --cov-report=html --cov-config=.coveragerc
- name: Publish Unit Test Results
uses: actions/upload-artifact@v4
with:
name: unit-test-results
path: "htmlcov/**"
================================================
FILE: .github/workflows/rag_exp_acc_ci.yml
================================================
name: RAG Experiment Accelerator CI
on:
workflow_call:
workflow_dispatch:
pull_request:
types: [opened, ready_for_review, synchronize]
branches:
- main
- development
- prerelease
push:
branches:
- main
- development
- prerelease
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/development' && github.ref != 'refs/heads/main' && github.ref != 'refs/heads/prerelease'}}
jobs:
execute-code-and-check:
env:
AZURE_SEARCH_ADMIN_KEY: ${{ secrets.AZURE_SEARCH_ADMIN_KEY }}
AZURE_SEARCH_SERVICE_ENDPOINT: ${{ secrets.AZURE_SEARCH_SERVICE_ENDPOINT }}
AZURE_SEARCH_USE_SEMANTIC_SEARCH: "true"
AZURE_LANGUAGE_SERVICE_KEY: ${{ secrets.AZURE_LANGUAGE_SERVICE_KEY }}
AZURE_LANGUAGE_SERVICE_ENDPOINT: ${{ secrets.AZURE_LANGUAGE_SERVICE_ENDPOINT }}
OPENAI_API_TYPE: "azure"
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENAI_API_VERSION: ${{ secrets.OPENAI_API_VERSION }}
OPENAI_ENDPOINT: ${{ secrets.OPENAI_ENDPOINT }}
AML_RESOURCE_GROUP_NAME: ${{ secrets.RESOURCE_GROUP_NAME }}
AML_SUBSCRIPTION_ID: ${{ secrets.SUBSCRIPTION_ID }}
AML_WORKSPACE_NAME: ${{ secrets.WORKSPACE_NAME }}
AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT: ""
AZURE_DOCUMENT_INTELLIGENCE_ADMIN_KEY: ""
name: code validation through execution
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v4
- name: Azure login
uses: azure/login@v2
with:
creds: ${{ secrets.azure_credentials }}
- name: Configure Azure ML Agent
uses: ./.github/actions/configure_azureml_agent
- name: execute index creation step
shell: bash
run: |
python 01_index.py --data_dir='data-ci' --config_path=${{ github.workspace }}/.github/workflows/config.json
- name: execute qna step
shell: bash
run: |
python 02_qa_generation.py --data_dir='data-ci' --config_path=${{ github.workspace }}/.github/workflows/config.json
- name: execute querying step
shell: bash
run: |
python 03_querying.py --data_dir='data-ci' --config_path=${{ github.workspace }}/.github/workflows/config.json
- name: execute evaluation step
shell: bash
run: |
python 04_evaluation.py --data_dir='data-ci' --config_path=${{ github.workspace }}/.github/workflows/config.json
================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/
artifacts/
# OSX system folders
**/.DS_Store
# Data files
data/*
# Keep folders
!data/pdf/
!data/html/
!data/markdown/
!data/json/
!data/text/
# Keep sample files
!data/pdf/sample-pdf.pdf
!data/html/sample-html.html
!data/docx/sample-docx.docx
!data/markdown/sample-markdown.md
!data/markdown/sample-txt.txt
!data/json/sample-json.json
# promptflow folders
.promptflow
.azure
.vscode
<MagicMock*
checkpoints/
mlruns
# AzureML config folder
.azureml/*
# Generated Conda file
conda.generated.yaml
# User-defined config
config.json
================================================
FILE: .pre-commit-config.yaml
================================================
repos:
- repo: https://github.com/psf/black
rev: 23.12.1
hooks:
- id: black
language_version: python3
- repo: https://github.com/pycqa/flake8
rev: 7.0.0
hooks:
- id: flake8
args: [--extend-ignore=E501]
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.28.5
hooks:
- id: check-jsonschema
files: ^config.sample.json|.github/workflows/config.json$
types: [json]
args: ["--schemafile", "config.schema.json"]
- repo: local
hooks:
- id: bicep
name: bicep
description: Lint and build Bicep files
entry: ./infra/generate_arm_template.sh
language: script
files: \.bicep$
require_serial: true
args: # Bicep files that we want to generate ARM templates from
- -f=./infra/main.bicep
================================================
FILE: 01_index.py
================================================
import json
import argparse
import mlflow
from azureml.pipeline import initialise_mlflow_client
from rag_experiment_accelerator.checkpoint import init_checkpoint
from rag_experiment_accelerator.run.index import run
from rag_experiment_accelerator.config.config import Config
from rag_experiment_accelerator.config.environment import Environment
from rag_experiment_accelerator.config.paths import get_all_file_paths, mlflow_run_name
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
"--config_path", type=str, help="input: path to the config file"
)
parser.add_argument("--data_dir", type=str, help="input: path to the input data")
parser.add_argument(
"-s",
"--sampling",
action="store_true",
help="input: run sampling. Avoid running on distributed compute",
)
args, _ = parser.parse_known_args()
environment = Environment.from_env_or_keyvault()
config = Config.from_path(environment, args.config_path, args.data_dir)
init_checkpoint(config)
file_paths = get_all_file_paths(config.path.data_dir)
mlflow_client = initialise_mlflow_client(environment, config)
mlflow.set_experiment(config.experiment_name)
do_sample = args.sampling
index_dict = {"indexes": []}
file_paths = get_all_file_paths(config.path.data_dir)
for index_config in config.index.flatten():
with mlflow.start_run(run_name=mlflow_run_name(f"index_job_{config.job_name}")):
index_name = run(
environment, config, index_config, file_paths, mlflow_client, do_sample
)
index_dict["indexes"].append(index_name)
# saves the list of index names locally, not used afterwards
with open(config.path.generated_index_names_file, "w") as index_names_file:
json.dump(index_dict, index_names_file, indent=4)
================================================
FILE: 02_qa_generation.py
================================================
import argparse
from rag_experiment_accelerator.checkpoint import init_checkpoint
from rag_experiment_accelerator.run.qa_generation import run
from rag_experiment_accelerator.config.config import Config
from rag_experiment_accelerator.config.environment import Environment
from rag_experiment_accelerator.config.paths import get_all_file_paths
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
"--config_path", type=str, help="input: path to the config file"
)
parser.add_argument("--data_dir", type=str, help="input: path to the input data")
args, _ = parser.parse_known_args()
environment = Environment.from_env_or_keyvault()
config = Config.from_path(environment, args.config_path, args.data_dir)
init_checkpoint(config)
run(environment, config, get_all_file_paths(config.path.data_dir))
================================================
FILE: 03_querying.py
================================================
import argparse
import mlflow
from azureml.pipeline import initialise_mlflow_client
from rag_experiment_accelerator.checkpoint import init_checkpoint
from rag_experiment_accelerator.config.config import Config
from rag_experiment_accelerator.config.environment import Environment
from rag_experiment_accelerator.config.paths import mlflow_run_name
from rag_experiment_accelerator.run.querying import run
from rag_experiment_accelerator.data_assets.data_asset import create_data_asset
from rag_experiment_accelerator.artifact.handlers.query_output_handler import (
QueryOutputHandler,
)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
"--config_path", type=str, help="input: path to the config file"
)
parser.add_argument(
"--data_dir",
type=str,
help="input: path to the input data",
default=None, # default is initialized in Config
)
args, _ = parser.parse_known_args()
environment = Environment.from_env_or_keyvault()
config = Config.from_path(
environment,
args.config_path,
)
mlflow_client = initialise_mlflow_client(environment, config)
mlflow.set_experiment(config.experiment_name)
handler = QueryOutputHandler(config.path.query_data_dir)
init_checkpoint(config)
for index_config in config.index.flatten():
with mlflow.start_run(run_name=mlflow_run_name(config.job_name)):
run(environment, config, index_config, mlflow_client)
index_name = index_config.index_name()
create_data_asset(
data_path=handler.get_output_path(
index_name, config.experiment_name, config.job_name
),
data_asset_name=index_name,
environment=environment,
)
================================================
FILE: 04_evaluation.py
================================================
import argparse
import mlflow
from azureml.pipeline import initialise_mlflow_client
from rag_experiment_accelerator.config.environment import Environment
from rag_experiment_accelerator.run.evaluation import run
from rag_experiment_accelerator.config.config import Config
from rag_experiment_accelerator.config.paths import (
mlflow_run_name,
formatted_datetime_suffix,
)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
"--config_path", type=str, help="input: path to the config file"
)
parser.add_argument(
"--data_dir",
type=str,
help="input: path to the input data",
default=None, # default is initialized in Config
)
args, _ = parser.parse_known_args()
environment = Environment.from_env_or_keyvault()
config = Config.from_path(environment, args.config_path, args.data_dir)
name_suffix = formatted_datetime_suffix()
mlflow_client = initialise_mlflow_client(environment, config)
mlflow.set_experiment(config.experiment_name)
for index_config in config.index.flatten():
with mlflow.start_run(run_name=mlflow_run_name(config.job_name, name_suffix)):
run(
environment,
config,
index_config,
mlflow_client,
name_suffix=name_suffix,
)
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Microsoft Open Source Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
Resources:
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) Microsoft Corporation.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE
requests-oauthlib
Copyright (c) 2014 Kenneth Reitz.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
threadpoolctl
Copyright (c) 2019, threadpoolctl contributors
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
isodate
Copyright (c) 2021, Hugo van Kemenade and contributors
Copyright (c) 2009-2018, Gerhard Weis and contributors
Copyright (c) 2009, Gerhard Weis
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PyPDF2
Copyright (c) 2006-2008, Mathieu Fenniak
Some contributions copyright (c) 2007, Ashish Kulkarni <kulkarni.ashish@gmail.com>
Some contributions copyright (c) 2014, Steve Witham <switham_github@mac-guyver.com>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
wasabi
Copyright (C) 2018 Ines Montani
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
toolz
Copyright (c) 2013 Matthew Rocklin
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
a. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
b. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
c. Neither the name of toolz nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
llvmlite
Copyright (c) 2014-, Continuum Analytics, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
scikit-learn
BSD 3-Clause License
Copyright (c) 2007-2023 The scikit-learn developers.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
partd
Copyright (c) 2015, Continuum Analytics, Inc. and contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
Neither the name of Continuum Analytics nor the names of any contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
Pygments
Copyright (c) 2006-2022 by the respective authors (see AUTHORS file).
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
pandas
BSD 3-Clause License
Copyright (c) 2008-2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
All rights reserved.
Copyright (c) 2011-2024, Open source contributors.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Markdown
BSD 3-Clause License
Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)
Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
Copyright 2004 Manfred Stienstra (the original version)
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
tiktoken
Copyright (c) 2022 OpenAI, Shantanu Jain
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
dask
BSD 3-Clause License
Copyright (c) 2014, Anaconda, Inc. and contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
blis
NOTE: Portions of this project's code are copyrighted by
The University of Texas at Austin
while other portions are copyrighted by
Hewlett Packard Enterprise Development LP
Advanced Micro Devices, Inc.
ExplosionAI GmbH
with some overlap. Please see file-level license headers for file-specific
copyright info. All parties provide their portions of the code under the
3-clause BSD license, found below.
---
Copyright (C) 2018, The University of Texas at Austin
Copyright (C) 2016, Hewlett Packard Enterprise Development LP
Copyright (C) 2018 - 2019, Advanced Micro Devices, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name(s) of the copyright holder(s) nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
portalocker
Copyright 2022 Rick van Hattem
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Pillow
The Python Imaging Library (PIL) is
Copyright © 1997-2011 by Secret Labs AB
Copyright © 1995-2011 by Fredrik Lundh
Pillow is the friendly PIL fork. It is
Copyright © 2010-2024 by Jeffrey A. Clark (Alex) and contributors.
Like PIL, Pillow is licensed under the open source HPND License:
By obtaining, using, and/or copying this software and/or its associated
documentation, you agree that you have read, understood, and will comply
with the following terms and conditions:
Permission to use, copy, modify and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appears in all copies, and that
both that copyright notice and this permission notice appear in supporting
documentation, and that the name of Secret Labs AB or the author not be
used in advertising or publicity pertaining to distribution of the software
without specific, written prior permission.
SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL,
INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
bsdiff4
Copyright (c) 2011-2019, Ilan Schnell
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of the (Python) bsdiff4 project.
/***************************************************************************
* the module bsdiff4/core.c has been drived from cx_bsdiff written by *
* Anthony Tuininga, http://cx-bsdiff.sourceforge.net/), which was *
* released under the BSD Protection License below *
***************************************************************************/
BSD Protection License
February 2002
Preamble
--------
The Berkeley Software Distribution ("BSD") license has proven very effective
over the years at allowing for a wide spread of work throughout both
commercial and non-commercial products. For programmers whose primary
intention is to improve the general quality of available software, it is
arguable that there is no better license than the BSD license, as it
permits improvements to be used wherever they will help, without idealogical
or metallic constraint.
This is of particular value to those who produce reference implementations
of proposed standards: The case of TCP/IP clearly illustrates that freely
and universally available implementations leads the rapid acceptance of
standards -- often even being used instead of a de jure standard (eg, OSI
network models).
With the rapid proliferation of software licensed under the GNU General
Public License, however, the continued success of this role is called into
question. Given that the inclusion of a few lines of "GPL-tainted" work
into a larger body of work will result in restricted distribution -- and
given that further work will likely build upon the "tainted" portions,
making them difficult to remove at a future date -- there are inevitable
circumstances where authors would, in order to protect their goal of
providing for the widespread usage of their work, wish to guard against
such "GPL-taint".
In addition, one can imagine that companies which operate by producing and
selling (possibly closed-source) code would wish to protect themselves
against the rise of a GPL-licensed competitor. While under existing
licenses this would mean not releasing their code under any form of open
license, if a license existed under which they could incorporate any
improvements back into their own (commercial) products then they might be
far more willing to provide for non-closed distribution.
For the above reasons, we put forth this "BSD Protection License": A
license designed to retain the freedom granted by the BSD license to use
licensed works in a wide variety of settings, both non-commercial and
commercial, while protecting the work from having future contributors
restrict that freedom.
The precise terms and conditions for copying, distribution, and
modification follow.
BSD PROTECTION LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND MODIFICATION
----------------------------------------------------------------
0. Definitions.
a) "Program", below, refers to any program or work distributed under
the terms of this license.
b) A "work based on the Program", below, refers to either the Program
or any derivative work under copyright law.
c) "Modification", below, refers to the act of creating derivative works.
d) "You", below, refers to each licensee.
1. Scope.
This license governs the copying, distribution, and modification of the
Program. Other activities are outside the scope of this license; The
act of running the Program is not restricted, and the output from the
Program is covered only if its contents constitute a work based on the
Program.
2. Verbatim copies.
You may copy and distribute verbatim copies of the Program as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice; keep
intact all the notices that refer to this License and to the absence of
any warranty; and give any other recipients of the Program a copy of this
License along with the Program.
3. Modification and redistribution under closed license.
You may modify your copy or copies of the Program, and distribute
the resulting derivative works, provided that you meet the
following conditions:
a) The copyright notice and disclaimer on the Program must be reproduced
and included in the source code, documentation, and/or other materials
provided in a manner in which such notices are normally distributed.
b) The derivative work must be clearly identified as such, in order that
it may not be confused with the original work.
c) The license under which the derivative work is distributed must
expressly prohibit the distribution of further derivative works.
4. Modification and redistribution under open license.
You may modify your copy or copies of the Program, and distribute
the resulting derivative works, provided that you meet the
following conditions:
a) The copyright notice and disclaimer on the Program must be reproduced
and included in the source code, documentation, and/or other materials
provided in a manner in which such notices are normally distributed.
b) You must clearly indicate the nature and date of any changes made
to the Program. The full details need not necessarily be included in
the individual modified files, provided that each modified file is
clearly marked as such and instructions are included on where the
full details of the modifications may be found.
c) You must cause any work that you distribute or publish, that in whole
or in part contains or is derived from the Program or any part
thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
5. Implied acceptance.
You may not copy or distribute the Program or any derivative works except
as expressly provided under this license. Consequently, any such action
will be taken as implied acceptance of the terms of this license.
6. NO WARRANTY.
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
MarkupSafe
Copyright 2010 Pallets
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
jsonpickle
Copyright (C) 2008 John Paulett (john -at- paulett.org)
Copyright (C) 2009-2021 David Aguilar (davvid -at- gmail.com)
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
paho-mqtt
This project is dual licensed under the Eclipse Public License 2.0 and the
Eclipse Distribution License 1.0 as described in the epl-v20 and edl-v10 files.
chardet
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
itsdangerous
Copyright 2011 Pallets
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
pyasn1-modules
Copyright (c) 2005-2020, Ilya Etingof <etingof@gmail.com>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
contourpy
BSD 3-Clause License
Copyright (c) 2021-2024, ContourPy Developers.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
GitPython
Copyright (C) 2008, 2009 Michael Trier and contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the GitPython project nor the names of
its contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Flask
Copyright 2010 Pallets
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
joblib
BSD 3-Clause License
Copyright (c) 2008-2021, The joblib developers.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cycler
Copyright (c) 2015, matplotlib project
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the matplotlib project nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mkdocs-altlink-plugin
Copyright (c) 2018 Zach Hannum
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
mkdocs-video
The MIT License (MIT)
Copyright (c) 2023 Mikalai Lisitsa
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
pycparser
pycparser -- A C parser in Python
Copyright (c) 2008-2022, Eli Bendersky
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its contributors may
be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
oauthlib
Copyright (c) 2019 The OAuthlib Community
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of this project nor the names of its contributors may
be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
shap
The MIT License (MIT)
Copyright (c) 2018 Scott Lundberg
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
idna
BSD 3-Clause License
Copyright (c) 2013-2023, Kim Davies and contributors. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
filelock
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <http://unlicense.org>
sqlparse
Copyright (c) 2016, Andi Albrecht <albrecht.andi@gmail.com>
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the authors nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
paramiko
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
scipy
Copyright (c) 2001-2002 Enthought, Inc. 2003-2024, SciPy Developers.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
smmap
Copyright (C) 2010, 2011 Sebastian Thiel and contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the async project nor the names of
its contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Babel
Copyright (c) 2013-2023 by the Babel Team, see AUTHORS for more information.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
click
Copyright 2014 Pallets
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PySocks
Copyright 2006 Dan-Haim. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of Dan Haim nor the names of his contributors may be used
to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY DAN HAIM "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL DAN HAIM OR HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMANGE.
cloudpickle
This module was extracted from the `cloud` package, developed by
PiCloud, Inc.
Copyright (c) 2015, Cloudpickle contributors.
Copyright (c) 2012, Regents of the University of California.
Copyright (c) 2009 PiCloud, Inc. http://www.picloud.com.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the University of California, Berkeley nor the
names of its contributors may be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
pyasn1
Copyright (c) 2005-2020, Ilya Etingof <etingof@gmail.com> All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
numba
Copyright (c) 2012, Anaconda, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
kiwisolver
=========================
The Kiwi licensing terms
=========================
Kiwi is licensed under the terms of the Modified BSD License (also known as
New or Revised BSD), as follows:
Copyright (c) 2013, Nucleic Development Team
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
Neither the name of the Nucleic Development Team nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
About Kiwi
----------
Chris Colbert began the Kiwi project in December 2013 in an effort to
create a blisteringly fast UI constraint solver. Chris is still the
project lead.
The Nucleic Development Team is the set of all contributors to the Nucleic
project and its subprojects.
The core team that coordinates development on GitHub can be found here:
http://github.com/nucleic. The current team consists of:
* Chris Colbert
Our Copyright Policy
--------------------
Nucleic uses a shared copyright model. Each contributor maintains copyright
over their contributions to Nucleic. But, it is important to note that these
contributions are typically only changes to the repositories. Thus, the Nucleic
source code, in its entirety is not the copyright of any single person or
institution. Instead, it is the collective copyright of the entire Nucleic
Development Team. If individual contributors want to maintain a record of what
changes/contributions they have specific copyright on, they should indicate
their copyright in the commit message of the change, when they commit the
change to one of the Nucleic repositories.
With this in mind, the following banner should be used in any source code file
to indicate the copyright and license terms:
#------------------------------------------------------------------------------
# Copyright (c) 2013, Nucleic Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
#------------------------------------------------------------------------------
locket
Copyright (c) 2012, Michael Williamson
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
protobuf
Copyright 2021 Google Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Code generated by the Protocol Buffer compiler is owned by the owner
of the input file used when generating it. This code is not
standalone and requires a support library to be linked with it. This
support library is itself covered by the above license.
dask-mpi
Copyright (c) 2018, Anaconda, Inc. and contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
Neither the name of Anaconda nor the names of any contributors may be used to
endorse or promote products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
nodeenv
Copyright (c) 2011, Eugene Kalinin.
Some rights reserved.
Redistribution and use in source and binary forms of the software as well
as documentation, with or without modification, are permitted provided
that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* The names of the contributors may not be used to endorse or
promote products derived from this software without specific
prior written permission.
THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
networkx
Copyright (C) 2004-2024, NetworkX Developers
Aric Hagberg <hagberg@lanl.gov>
Dan Schult <dschult@colgate.edu>
Pieter Swart <swart@lanl.gov>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of the NetworkX Developers nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
python-dateutil
Copyright 2017- Paul Ganssle <paul@ganssle.io>
Copyright 2017- dateutil contributors (see AUTHORS file)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
The above license applies to all contributions after 2017-12-01, as well as
all contributions that have been re-licensed (see AUTHORS file for the list of
contributors who have re-licensed their code).
--------------------------------------------------------------------------------
dateutil - Extensions to the standard Python datetime module.
Copyright (c) 2003-2011 - Gustavo Niemeyer <gustavo@niemeyer.net>
Copyright (c) 2012-2014 - Tomi Pieviläinen <tomi.pievilainen@iki.fi>
Copyright (c) 2014-2016 - Yaron de Leeuw <me@jarondl.net>
Copyright (c) 2015- - Paul Ganssle <paul@ganssle.io>
Copyright (c) 2015- - dateutil contributors (see AUTHORS file)
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The above BSD License Applies to all code, even that also covered by Apache 2.0.
colorama
Copyright (c) 2010 Jonathan Hartley
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holders, nor those of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mkdocs-plugin-inline-svg
Copyright (c) 2021 Craig Roberts
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Jinja2
Copyright 2007 Pallets
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
numpy
Copyright (c) 2005-2024, NumPy Developers.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of the NumPy Developers nor the names of any
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
fsspec
BSD 3-Clause License
Copyright (c) 2018, Martin Durant
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
spacy-loggers
MIT License
Copyright (c) 2021 ExplosionAI GmbH
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Werkzeug
Copyright 2007 Pallets
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mkdocs
Copyright © 2014-present, Tom Christie. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
gitdb
Copyright (C) 2010, 2011 Sebastian Thiel and contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the GitDB project nor the names of
its contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Additional Licenses
-------------------
The files at
gitdb/test/fixtures/packs/pack-11fdfa9e156ab73caae3b6da867192221f2089c2.idx
and
gitdb/test/fixtures/packs/pack-11fdfa9e156ab73caae3b6da867192221f2089c2.pack
are licensed under GNU GPL as part of the git source repository,
see http://en.wikipedia.org/wiki/Git_%28software%29 for more information.
They are not required for the actual operation, which is why they are not found
in the distribution package.
traitlets
- Copyright (c) 2001-, IPython Development Team
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
psutil
Copyright (c) 2009, Jay Loden, Dave Daeschler, Giampaolo Rodola
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the psutil authors nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ipykernel
Copyright (c) 2015, IPython Development Team
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
comm
BSD 3-Clause License
Copyright (c) 2022, Jupyter
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
pexpect
This license is approved by the OSI and FSF as GPL-compatible.
http://opensource.org/licenses/isc-license.txt
Copyright (c) 2013-2014, Pexpect development team
Copyright (c) 2012, Noah Spurrier <noah@noah.org>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
pyzmq
BSD 3-Clause License
Copyright (c) 2009-2012, Brian Granger, Min Ragan-Kelley
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
matplotlib-inline
BSD 3-Clause License
Copyright (c) 2019-2022, IPython Development Team.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF A DVISED OF THE POSSIBILITY OF SUCH DAMAGE.
backcall
Copyright (c) 2014, Thomas Kluyver
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
* Neither the name of the {organization} nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
jupyter_client
BSD 3-Clause License
- Copyright (c) 2001-2015, IPython Development Team
- Copyright (c) 2015-, Jupyter Development Team
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
nest-asyncio
BSD 2-Clause License
Copyright (c) 2018-2020, Ewald de Wit
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ipython
BSD 3-Clause License
- Copyright (c) 2008-Present, IPython Development Team
- Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
- Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
- Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
jupyter_core
BSD 3-Clause License
- Copyright (c) 2015-, Jupyter Development Team
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
asttokens
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual
gitextract_gvj_8lac/ ├── .coveragerc ├── .devcontainer/ │ ├── devcontainer.json │ └── post-create.sh ├── .flake8 ├── .github/ │ ├── actions/ │ │ └── configure_azureml_agent/ │ │ └── action.yml │ ├── dependabot.yml │ └── workflows/ │ ├── build_validation_workflow.yml │ └── rag_exp_acc_ci.yml ├── .gitignore ├── .pre-commit-config.yaml ├── 01_index.py ├── 02_qa_generation.py ├── 03_querying.py ├── 04_evaluation.py ├── CODE_OF_CONDUCT.md ├── LICENSE ├── Makefile ├── README.md ├── SECURITY.md ├── SUPPORT.md ├── azure.yaml ├── azureml/ │ ├── eval.py │ ├── index.py │ ├── pipeline.py │ └── query.py ├── config.sample.json ├── config.schema.json ├── cspell.json ├── data-ci/ │ └── docx/ │ └── sample-docx.docx ├── dev-requirements.txt ├── docs/ │ ├── azureml-pipeline.md │ ├── configs-appendix.md │ ├── environment-variables.md │ ├── evaluation-metrics.md │ ├── script-inputs-outputs.md │ └── wsl.md ├── env_to_keyvault.py ├── experimental/ │ └── readme.md ├── images/ │ └── AzureMLPipeline.drawio ├── infra/ │ ├── abbreviations.json │ ├── generate_arm_template.sh │ ├── main.bicep │ ├── main.bicepparam │ ├── main.json │ ├── network/ │ │ ├── azure_bastion.bicep │ │ └── network_isolation.bicep │ └── shared/ │ ├── cognitiveservices.bicep │ ├── keyvault-secret.bicep │ ├── keyvault.bicep │ ├── machineLearning.bicep │ ├── monitoring.bicep │ ├── search-services.bicep │ ├── storage.bicep │ └── storekeys.bicep ├── promptflow/ │ └── rag-experiment-accelerator/ │ ├── README.md │ ├── custom_environment/ │ │ ├── Dockerfile │ │ ├── environment.yaml │ │ └── rag_experiment_accelerator-0.9-py3-none-any.whl │ ├── env_setup.md │ ├── evaluation/ │ │ ├── evaluation.py │ │ └── flow.dag.yaml │ ├── flow.dag.yaml │ ├── index/ │ │ ├── create_index.py │ │ └── flow.dag.yaml │ ├── qa_generation/ │ │ ├── flow.dag.yaml │ │ └── generate_qa.py │ ├── querying/ │ │ ├── flow.dag.yaml │ │ └── querying.py │ └── setup/ │ ├── flow.dag.yaml │ └── setup_env.py ├── pyproject.toml ├── rag_experiment_accelerator/ │ ├── __init__.py │ ├── artifact/ │ │ ├── __init__.py │ │ ├── handlers/ │ │ │ ├── __init__.py │ │ │ ├── artifact_handler.py │ │ │ ├── exceptions.py │ │ │ ├── query_output_handler.py │ │ │ ├── tests/ │ │ │ │ ├── test_artifact_handler.py │ │ │ │ └── test_query_output_handler.py │ │ │ └── typing.py │ │ └── models/ │ │ ├── __init__.py │ │ └── query_output.py │ ├── checkpoint/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── checkpoint.py │ │ ├── checkpoint_decorator.py │ │ ├── checkpoint_factory.py │ │ ├── local_storage_checkpoint.py │ │ ├── null_checkpoint.py │ │ └── tests/ │ │ ├── test_checkpoint.py │ │ ├── test_local_storage_checkpoint.py │ │ └── test_null_checkpoint.py │ ├── config/ │ │ ├── __init__.py │ │ ├── base_config.py │ │ ├── chunking_config.py │ │ ├── config.py │ │ ├── config_validator.py │ │ ├── embedding_model_config.py │ │ ├── environment.py │ │ ├── eval_config.py │ │ ├── index_config.py │ │ ├── language_config.py │ │ ├── openai_config.py │ │ ├── path_config.py │ │ ├── paths.py │ │ ├── query_expansion.py │ │ ├── rerank_config.py │ │ ├── sampling_config.py │ │ ├── search_config.py │ │ └── tests/ │ │ ├── test_config.py │ │ ├── test_config_validator.py │ │ ├── test_environment.py │ │ └── test_index_config.py │ ├── data_assets/ │ │ ├── __init__.py │ │ └── data_asset.py │ ├── doc_loader/ │ │ ├── __init__.py │ │ ├── customJsonLoader.py │ │ ├── documentIntelligenceLoader.py │ │ ├── documentLoader.py │ │ ├── docxLoader.py │ │ ├── htmlLoader.py │ │ ├── jsonLoader.py │ │ ├── markdownLoader.py │ │ ├── pdfLoader.py │ │ ├── structuredLoader.py │ │ ├── tests/ │ │ │ ├── test_custom_html_loader.py │ │ │ ├── test_custom_json_loader.py │ │ │ ├── test_data/ │ │ │ │ ├── document_intelligence_response/ │ │ │ │ │ ├── multiple_pages.json │ │ │ │ │ ├── simple_response.json │ │ │ │ │ └── table_without_headers.json │ │ │ │ └── json/ │ │ │ │ ├── data.bad.invalid_keys.json │ │ │ │ ├── data.bad.not_a_list.json │ │ │ │ └── data.valid.json │ │ │ ├── test_document_intelligence_loader.py │ │ │ └── test_docx_loader.py │ │ └── textLoader.py │ ├── embedding/ │ │ ├── __init__.py │ │ ├── aoai_embedding_model.py │ │ ├── embedding_model.py │ │ ├── factory.py │ │ ├── st_embedding_model.py │ │ └── tests/ │ │ ├── test_aoai_embedding_model.py │ │ ├── test_factory.py │ │ └── test_st_embedding_model.py │ ├── evaluation/ │ │ ├── LICENSE.txt │ │ ├── __init__.py │ │ ├── eval.py │ │ ├── llm_based_metrics.py │ │ ├── plain_metrics.py │ │ ├── plot_metrics.py │ │ ├── search_eval.py │ │ ├── spacy_evaluator.py │ │ ├── tests/ │ │ │ ├── test_llm_based_metrics.py │ │ │ ├── test_plain_metrics.py │ │ │ ├── test_search_eval.py │ │ │ ├── test_spacy_evaluator.py │ │ │ └── test_transformer_based_metrics.py │ │ └── transformer_based_metrics.py │ ├── ingest_data/ │ │ ├── __init__.py │ │ ├── acs_ingest.py │ │ └── tests/ │ │ └── test_acs_ingest.py │ ├── init_Index/ │ │ ├── __init__.py │ │ ├── create_index.py │ │ └── tests/ │ │ └── test_create_index.py │ ├── io/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── loader.py │ │ ├── local/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── loaders/ │ │ │ │ ├── __init__.py │ │ │ │ ├── jsonl_loader.py │ │ │ │ ├── local_loader.py │ │ │ │ └── tests/ │ │ │ │ ├── test_jsonl_loader.py │ │ │ │ └── test_local_loader.py │ │ │ ├── tests/ │ │ │ │ └── test_local_io_base.py │ │ │ └── writers/ │ │ │ ├── __init__.py │ │ │ ├── jsonl_writer.py │ │ │ ├── local_writer.py │ │ │ └── tests/ │ │ │ ├── test_jsonl_writer.py │ │ │ └── test_local_writer.py │ │ └── writer.py │ ├── llm/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── prompt/ │ │ │ ├── __init__.py │ │ │ ├── hyde_prompts.py │ │ │ ├── instruction_prompts.py │ │ │ ├── multiprompts.py │ │ │ ├── prompt.py │ │ │ ├── qna_prompts.py │ │ │ ├── ragas_prompts.py │ │ │ └── rerank_prompts.py │ │ ├── prompts_text/ │ │ │ ├── do_need_multiple_prompt_instruction.txt │ │ │ ├── generate_qna_long_multi_context.txt │ │ │ ├── generate_qna_long_single_context.txt │ │ │ ├── generate_qna_short_multi_context.txt │ │ │ ├── generate_qna_short_single_context.txt │ │ │ ├── generate_qna_short_single_context_no_cot.txt │ │ │ ├── llm_answer_relevance_instruction.txt │ │ │ ├── llm_context_precision_instruction.txt │ │ │ ├── llm_context_recall_instruction.txt │ │ │ ├── main_instruction_long.txt │ │ │ ├── main_instruction_short.txt │ │ │ ├── multiple_prompt_instruction.txt │ │ │ ├── prompt_generate_hypothetical_answer.txt │ │ │ ├── prompt_generate_hypothetical_document.txt │ │ │ ├── prompt_generate_hypothetical_questions.txt │ │ │ ├── prompt_instruction_entities.txt │ │ │ ├── prompt_instruction_keywords.txt │ │ │ ├── prompt_instruction_summary.txt │ │ │ ├── prompt_instruction_title.txt │ │ │ └── rerank_prompt_instruction.txt │ │ ├── response_generator.py │ │ └── tests/ │ │ └── test_response_generator.py │ ├── nlp/ │ │ ├── __init__.py │ │ ├── language_evaluator.py │ │ ├── preprocess.py │ │ └── tests/ │ │ ├── test_language_evaluator.py │ │ └── test_preprocessor.py │ ├── reranking/ │ │ ├── __init__.py │ │ └── reranker.py │ ├── run/ │ │ ├── evaluation.py │ │ ├── index.py │ │ ├── qa_generation.py │ │ ├── querying.py │ │ └── tests/ │ │ ├── data/ │ │ │ └── test_data.jsonl │ │ ├── test_index.py │ │ ├── test_qa_generation.py │ │ └── test_querying.py │ ├── sampling/ │ │ ├── __init__.py │ │ ├── clustering.py │ │ └── tests/ │ │ ├── data/ │ │ │ └── test1.txt │ │ └── test_clustering.py │ ├── search_type/ │ │ ├── __init__.py │ │ ├── acs_search_methods.py │ │ └── tests/ │ │ └── test_acs_search_methods.py │ └── utils/ │ ├── __init__.py │ ├── auth.py │ ├── logging.py │ └── timetook.py ├── requirements.txt ├── setup.cfg └── setup.py
SYMBOL INDEX (541 symbols across 123 files)
FILE: azureml/eval.py
function main (line 15) | def main():
FILE: azureml/index.py
function init (line 17) | def init():
function run (line 59) | def run(input_paths: list[str]) -> list[str]:
FILE: azureml/pipeline.py
function generate_conda_file (line 33) | def generate_conda_file():
function initialise_mlflow_client (line 57) | def initialise_mlflow_client(environment: Environment, config: Config):
function start_pipeline (line 75) | def start_pipeline(
FILE: azureml/query.py
function main (line 17) | def main():
FILE: promptflow/rag-experiment-accelerator/evaluation/evaluation.py
function my_python_tool (line 15) | def my_python_tool(config_path: str) -> bool:
FILE: promptflow/rag-experiment-accelerator/index/create_index.py
function my_python_tool (line 10) | def my_python_tool(should_index: bool, config_path: str) -> bool:
FILE: promptflow/rag-experiment-accelerator/qa_generation/generate_qa.py
function my_python_tool (line 9) | def my_python_tool(config_path: str, should_generate_qa: bool) -> bool:
FILE: promptflow/rag-experiment-accelerator/querying/querying.py
function my_python_tool (line 8) | def my_python_tool(config_path: str) -> bool:
FILE: promptflow/rag-experiment-accelerator/setup/setup_env.py
function my_python_tool (line 9) | def my_python_tool(connection: CustomConnection):
FILE: rag_experiment_accelerator/artifact/handlers/artifact_handler.py
class ArtifactHandler (line 11) | class ArtifactHandler:
method __init__ (line 27) | def __init__(self, data_location: str, writer: T, loader: U) -> None:
method load (line 33) | def load(self, name: str, **kwargs) -> list:
method handle_archive (line 63) | def handle_archive(self, name: str) -> str | None:
method save_dict (line 95) | def save_dict(self, data: dict, name: str, **kwargs):
FILE: rag_experiment_accelerator/artifact/handlers/exceptions.py
class LoadException (line 1) | class LoadException(Exception):
method __init__ (line 2) | def __init__(self, path: str):
FILE: rag_experiment_accelerator/artifact/handlers/query_output_handler.py
class QueryOutputHandler (line 10) | class QueryOutputHandler(ArtifactHandler):
method __init__ (line 15) | def __init__(
method _get_output_name (line 28) | def _get_output_name(
method get_output_path (line 42) | def get_output_path(
method load (line 56) | def load(
method handle_archive_by_index (line 81) | def handle_archive_by_index(
method save (line 96) | def save(
FILE: rag_experiment_accelerator/artifact/handlers/tests/test_artifact_handler.py
function test_loads (line 10) | def test_loads():
function test_save_dict (line 25) | def test_save_dict():
function test_loads_raises_no_data_returned (line 40) | def test_loads_raises_no_data_returned():
function test_load_raises_cant_handle (line 52) | def test_load_raises_cant_handle():
function test_handle_archive (line 63) | def test_handle_archive():
function test_handle_archive_no_op (line 78) | def test_handle_archive_no_op():
FILE: rag_experiment_accelerator/artifact/handlers/tests/test_query_output_handler.py
function test_handle_archive_by_index (line 14) | def test_handle_archive_by_index(mock_artifact_handler_handle_archive):
function test_get_output_path (line 27) | def test_get_output_path():
function test__get_output_name (line 38) | def test__get_output_name():
function test_save (line 52) | def test_save(mock_artifact_handler_save_dict):
function test_load (line 84) | def test_load(mock_artifact_handler_load):
function test_load_raises_when_loaded_data_not_dict (line 130) | def test_load_raises_when_loaded_data_not_dict(mock_artifact_handler_load):
FILE: rag_experiment_accelerator/artifact/models/query_output.py
class QueryOutput (line 1) | class QueryOutput:
method __init__ (line 22) | def __init__(
FILE: rag_experiment_accelerator/checkpoint/checkpoint.py
class Checkpoint (line 8) | class Checkpoint(ABC):
method load_or_run (line 17) | def load_or_run(self, method, id: str, *args, **kwargs) -> Any:
method _has_data (line 49) | def _has_data(self, id: str, method) -> bool:
method _load (line 60) | def _load(self, id: str, method) -> Any:
method _save (line 74) | def _save(self, data: Any, id: str, method):
FILE: rag_experiment_accelerator/checkpoint/checkpoint_decorator.py
function cache_with_checkpoint (line 4) | def cache_with_checkpoint(id=None):
FILE: rag_experiment_accelerator/checkpoint/checkpoint_factory.py
function get_checkpoint (line 7) | def get_checkpoint():
function init_checkpoint (line 17) | def init_checkpoint(config: Config):
function _get_checkpoint_base_on_config (line 25) | def _get_checkpoint_base_on_config(config: Config):
FILE: rag_experiment_accelerator/checkpoint/local_storage_checkpoint.py
class LocalStorageCheckpoint (line 9) | class LocalStorageCheckpoint(Checkpoint):
method __init__ (line 14) | def __init__(self, directory: str = "."):
method _has_data (line 19) | def _has_data(self, id: str, method) -> bool:
method _load (line 23) | def _load(self, id: str, method) -> List:
method _save (line 29) | def _save(self, data: Any, id: str, method):
method _get_checkpoint_file_path (line 36) | def _get_checkpoint_file_path(self, id: str, method):
method _build_internal_id (line 40) | def _build_internal_id(self, id: str, method):
method _get_existing_checkpoint_ids (line 44) | def _get_existing_checkpoint_ids(self) -> Set[str]:
FILE: rag_experiment_accelerator/checkpoint/null_checkpoint.py
class NullCheckpoint (line 5) | class NullCheckpoint(Checkpoint):
method __init__ (line 10) | def __init__(self):
method _has_data (line 13) | def _has_data(self, id: str, method) -> bool:
method _load (line 16) | def _load(self, id: str, method) -> Any:
method _save (line 19) | def _save(self, data: Any, id: str, method):
FILE: rag_experiment_accelerator/checkpoint/tests/test_checkpoint.py
function mock_checkpoints (line 17) | def mock_checkpoints():
function test_get_checkpoint_without_init_fails (line 24) | def test_get_checkpoint_without_init_fails():
function test_get_checkpoint_for_local_executions (line 33) | def test_get_checkpoint_for_local_executions(mock_checkpoints):
function test_get_checkpoint_for_azure_ml (line 43) | def test_get_checkpoint_for_azure_ml(mock_checkpoints):
function test_get_checkpoint_when_should_not_use_checkpoints_locally (line 54) | def test_get_checkpoint_when_should_not_use_checkpoints_locally(mock_che...
function test_get_checkpoint_when_should_not_use_checkpoints_in_azure_ml (line 64) | def test_get_checkpoint_when_should_not_use_checkpoints_in_azure_ml(mock...
FILE: rag_experiment_accelerator/checkpoint/tests/test_local_storage_checkpoint.py
function dummy (line 20) | def dummy(word, call_identifier):
class TestLocalStorageCheckpoint (line 24) | class TestLocalStorageCheckpoint(unittest.TestCase):
method setUp (line 25) | def setUp(self):
method tearDown (line 28) | def tearDown(self):
method test_wrapped_method_is_cached (line 32) | def test_wrapped_method_is_cached(self):
FILE: rag_experiment_accelerator/checkpoint/tests/test_null_checkpoint.py
function dummy (line 6) | def dummy(word):
class TestNullCheckpoint (line 10) | class TestNullCheckpoint(unittest.TestCase):
method test_wrapped_method_is_not_cached (line 11) | def test_wrapped_method_is_not_cached(self):
FILE: rag_experiment_accelerator/config/base_config.py
class BaseConfig (line 13) | class BaseConfig:
method from_dict (line 15) | def from_dict(cls, config_dict: dict) -> "BaseConfig":
method to_dict (line 34) | def to_dict(self) -> dict:
method flatten (line 51) | def flatten(self, randomize: bool = False):
method sample (line 96) | def sample(self) -> list["BaseConfig"]:
FILE: rag_experiment_accelerator/config/chunking_config.py
class ChunkingStrategy (line 6) | class ChunkingStrategy(StrEnum):
method __repr__ (line 10) | def __repr__(self) -> str:
class ChunkingConfig (line 15) | class ChunkingConfig(BaseConfig):
FILE: rag_experiment_accelerator/config/config.py
class ExecutionEnvironment (line 29) | class ExecutionEnvironment(StrEnum):
class Config (line 35) | class Config(BaseConfig):
method from_path (line 54) | def from_path(
method validate_inputs (line 94) | def validate_inputs(self, use_semantic_search: bool = False):
method initialize_embedding_models (line 108) | def initialize_embedding_models(self, environment: Environment):
method get_embedding_model (line 116) | def get_embedding_model(self, model_name) -> EmbeddingModel:
FILE: rag_experiment_accelerator/config/config_validator.py
function fetch_json_schema_from_url (line 9) | def fetch_json_schema_from_url(schema_url):
function fetch_json_schema_from_file (line 16) | def fetch_json_schema_from_file(schema_file_path, source_file_path):
function get_normalised_schema_path (line 29) | def get_normalised_schema_path(schema_file_path, source_file_path):
function fetch_json_schema (line 35) | def fetch_json_schema(schema_reference, source_file_path):
function validate_json_with_schema (line 50) | def validate_json_with_schema(
FILE: rag_experiment_accelerator/config/embedding_model_config.py
class EmbeddingModelConfig (line 6) | class EmbeddingModelConfig(BaseConfig):
FILE: rag_experiment_accelerator/config/environment.py
function field_to_env_name (line 17) | def field_to_env_name(field_name: str) -> str:
function _get_value_from_env (line 25) | def _get_value_from_env(var_name: str, is_optional: bool = False) -> Opt...
function init_keyvault (line 38) | def init_keyvault(azure_key_vault_endpoint: str) -> SecretClient:
function field_to_keyvault_name (line 48) | def field_to_keyvault_name(field_name: str) -> str:
function _get_value_from_keyvault (line 56) | def _get_value_from_keyvault(
class Environment (line 77) | class Environment:
method _field_names (line 97) | def _field_names(cls) -> list[str]:
method _is_field_optional (line 104) | def _is_field_optional(cls, field_name: str) -> bool:
method fields (line 111) | def fields(self) -> list[Tuple[str, str]]:
method _from_env (line 118) | def _from_env(cls) -> "Environment":
method from_keyvault (line 131) | def from_keyvault(cls, azure_key_vault_endpoint: str) -> "Environment":
method from_env_or_keyvault (line 145) | def from_env_or_keyvault(cls) -> "Environment":
method to_keyvault (line 189) | def to_keyvault(self, azure_key_vault_endpoint: str = None) -> None:
FILE: rag_experiment_accelerator/config/eval_config.py
class EvalConfig (line 6) | class EvalConfig(BaseConfig):
FILE: rag_experiment_accelerator/config/index_config.py
class IndexKey (line 12) | class IndexKey(StrEnum):
class IndexConfig (line 29) | class IndexConfig(BaseConfig):
method __label_properties (line 54) | def __label_properties(self) -> dict:
method __from_label_properties (line 81) | def __from_label_properties(cls, properties: dict) -> "IndexConfig":
method index_name (line 113) | def index_name(self) -> str:
method from_index_name (line 129) | def from_index_name(cls, index_name: str) -> "IndexConfig":
FILE: rag_experiment_accelerator/config/language_config.py
class LanguageAnalyzerConfig (line 6) | class LanguageAnalyzerConfig(BaseConfig):
class LanguageConfig (line 16) | class LanguageConfig(BaseConfig):
FILE: rag_experiment_accelerator/config/openai_config.py
class OpenAIConfig (line 6) | class OpenAIConfig(BaseConfig):
FILE: rag_experiment_accelerator/config/path_config.py
class Paths (line 7) | class Paths:
class PathConfig (line 18) | class PathConfig(BaseConfig):
method initialize_paths (line 27) | def initialize_paths(self, config_file_path: str, data_dir: str) -> None:
method sampled_cluster_predictions_path (line 61) | def sampled_cluster_predictions_path(self, optimum_k: int) -> str:
FILE: rag_experiment_accelerator/config/paths.py
function get_all_file_paths (line 11) | def get_all_file_paths(directory: str) -> list[str]:
function try_create_directory (line 19) | def try_create_directory(directory: str) -> None:
function formatted_datetime_suffix (line 38) | def formatted_datetime_suffix():
function mlflow_run_name (line 43) | def mlflow_run_name(job_name: str, suffix: str = None):
FILE: rag_experiment_accelerator/config/query_expansion.py
class QueryExpansionConfig (line 6) | class QueryExpansionConfig(BaseConfig):
FILE: rag_experiment_accelerator/config/rerank_config.py
class RerankConfig (line 6) | class RerankConfig(BaseConfig):
FILE: rag_experiment_accelerator/config/sampling_config.py
class SamplingConfig (line 6) | class SamplingConfig(BaseConfig):
FILE: rag_experiment_accelerator/config/search_config.py
class SearchConfig (line 6) | class SearchConfig(BaseConfig):
FILE: rag_experiment_accelerator/config/tests/test_config.py
function init_config (line 10) | def init_config():
function get_test_config_dir (line 19) | def get_test_config_dir():
function test_config_init (line 25) | def test_config_init(mock_validate_json_with_schema, mock_create_embeddi...
function test_config_init_raises_error (line 180) | def test_config_init_raises_error(
function test_chunk_size_greater_than_overlap_size (line 192) | def test_chunk_size_greater_than_overlap_size():
function test_validate_semantic_search_config (line 206) | def test_validate_semantic_search_config():
FILE: rag_experiment_accelerator/config/tests/test_config_validator.py
function test_fetch_json_schema_from_url_returns_json (line 17) | def test_fetch_json_schema_from_url_returns_json(mock_get):
function test_fetch_json_schema_from_url_raises_error_for_timeout (line 31) | def test_fetch_json_schema_from_url_raises_error_for_timeout(mock_get):
function test_fetch_json_schema_from_file_returns_json_from_file (line 46) | def test_fetch_json_schema_from_file_returns_json_from_file(mock_open, m...
function test_fetch_json_schema_from_file_uses_a_relative_path (line 65) | def test_fetch_json_schema_from_file_uses_a_relative_path(mock_open, moc...
function test_fetch_json_schema_from_file_raises_error_for_non_file_input (line 81) | def test_fetch_json_schema_from_file_raises_error_for_non_file_input(moc...
function test_get_normalised_schema_path (line 92) | def test_get_normalised_schema_path():
function test_fetch_json_schema_returns_from_cache (line 104) | def test_fetch_json_schema_returns_from_cache(mock_schema_cache):
function test_fetch_json_schema_updates_cache (line 117) | def test_fetch_json_schema_updates_cache(
function test_fetch_json_schema_returns_from_url_when_http (line 137) | def test_fetch_json_schema_returns_from_url_when_http(
function test_fetch_json_schema_returns_from_url_when_https (line 153) | def test_fetch_json_schema_returns_from_url_when_https(
function test_fetch_json_schema_returns_from_file (line 169) | def test_fetch_json_schema_returns_from_file(
function test_validate_json_with_schema_returns_true_for_no_schema (line 185) | def test_validate_json_with_schema_returns_true_for_no_schema():
function test_validate_json_with_schema_returns_for_valid_json (line 195) | def test_validate_json_with_schema_returns_for_valid_json(
function test_validate_json_with_schema_returns_for_invalid_json (line 211) | def test_validate_json_with_schema_returns_for_invalid_json(
FILE: rag_experiment_accelerator/config/tests/test_environment.py
function mock_get_value_from_env_with_keyvault (line 10) | def mock_get_value_from_env_with_keyvault(
function mock_get_secret_value_from_keyvault (line 28) | def mock_get_secret_value_from_keyvault(
function mock_get_any_value_from_keyvault (line 38) | def mock_get_any_value_from_keyvault(field_name: str) -> Optional[str]:
function test_create_environment_from_env_or_keyvault (line 68) | def test_create_environment_from_env_or_keyvault(_, __, mock_init_keyvau...
function test_create_environment_from_keyvault (line 85) | def test_create_environment_from_keyvault(mock_init_keyvault):
function test_to_keyvault (line 105) | def test_to_keyvault(mock_init_keyvault):
FILE: rag_experiment_accelerator/config/tests/test_index_config.py
function test_index_config_to_index_name (line 9) | def test_index_config_to_index_name():
function test_index_name_to_index_config (line 35) | def test_index_name_to_index_config():
function test_index_name_to_index_config_shuffled_order (line 52) | def test_index_name_to_index_config_shuffled_order():
function test_index_name_to_index_config_missing_property (line 69) | def test_index_name_to_index_config_missing_property():
function test_index_name_to_index_config_hyphens (line 82) | def test_index_name_to_index_config_hyphens():
FILE: rag_experiment_accelerator/data_assets/data_asset.py
function create_data_asset (line 12) | def create_data_asset(data_path: str, data_asset_name: str, environment:...
FILE: rag_experiment_accelerator/doc_loader/customJsonLoader.py
class CustomJSONLoader (line 12) | class CustomJSONLoader(BaseLoader):
method __init__ (line 13) | def __init__(
method _load_schema_from_dict (line 23) | def _load_schema_from_dict(self, data: dict) -> str:
method load (line 37) | def load(self) -> list[Document]:
FILE: rag_experiment_accelerator/doc_loader/documentIntelligenceLoader.py
function is_supported_by_document_intelligence (line 22) | def is_supported_by_document_intelligence(format: str) -> bool:
function load_with_azure_document_intelligence (line 45) | def load_with_azure_document_intelligence(
class DocumentIntelligenceLoader (line 105) | class DocumentIntelligenceLoader(BaseLoader):
method __init__ (line 110) | def __init__(
method load (line 146) | def load(self) -> List[Document]:
method lazy_load (line 166) | def lazy_load(self) -> Iterator[Document]:
method _get_file_paths (line 171) | def _get_file_paths(self):
method _analyze_document (line 182) | def _analyze_document(self, file_path: str):
method _call_document_intelligence (line 227) | def _call_document_intelligence(self, file_path):
method _clean_content (line 240) | def _clean_content(self, content: str):
method _convert_to_langchain_document (line 251) | def _convert_to_langchain_document(self, paragraphs, file_path, page_n...
method _is_intersecting_regions (line 259) | def _is_intersecting_regions(self, bounding_region1, bounding_region2):
method _is_intersecting_polygons (line 271) | def _is_intersecting_polygons(self, polygon1, polygon2):
method _assign_tables_to_paragraphs (line 293) | def _assign_tables_to_paragraphs(self, paragraphs, tables):
method _convert_to_paragraph (line 318) | def _convert_to_paragraph(self, table):
method _format_table (line 324) | def _format_table(self, table):
method _substitute_table_paragraphs (line 360) | def _substitute_table_paragraphs(self, paragraphs, tables):
method _split_paragraphs_by_page (line 383) | def _split_paragraphs_by_page(self, paragraphs):
method _load_with_langchain (line 393) | def _load_with_langchain(self, file_path, api_model):
FILE: rag_experiment_accelerator/doc_loader/documentLoader.py
function determine_processor (line 37) | def determine_processor(chunking_strategy: ChunkingStrategy, format: str...
function load_documents (line 50) | def load_documents(
FILE: rag_experiment_accelerator/doc_loader/docxLoader.py
function load_docx_files (line 12) | def load_docx_files(
FILE: rag_experiment_accelerator/doc_loader/htmlLoader.py
function load_html_files (line 12) | def load_html_files(
FILE: rag_experiment_accelerator/doc_loader/jsonLoader.py
function load_json_files (line 13) | def load_json_files(
FILE: rag_experiment_accelerator/doc_loader/markdownLoader.py
function load_markdown_files (line 12) | def load_markdown_files(
FILE: rag_experiment_accelerator/doc_loader/pdfLoader.py
function preprocess_pdf_content (line 13) | def preprocess_pdf_content(content: str):
function load_pdf_files (line 40) | def load_pdf_files(
FILE: rag_experiment_accelerator/doc_loader/structuredLoader.py
function load_structured_files (line 11) | def load_structured_files(
FILE: rag_experiment_accelerator/doc_loader/tests/test_custom_html_loader.py
function test_load_html_files (line 7) | def test_load_html_files():
FILE: rag_experiment_accelerator/doc_loader/tests/test_custom_json_loader.py
function test_load_json_files (line 12) | def test_load_json_files():
function test_load_json_files_raises_invalid_keys (line 43) | def test_load_json_files_raises_invalid_keys():
function test_load_json_files_raises_not_a_list (line 71) | def test_load_json_files_raises_not_a_list():
FILE: rag_experiment_accelerator/doc_loader/tests/test_document_intelligence_loader.py
class SimplePythonObject (line 8) | class SimplePythonObject:
method __init__ (line 9) | def __init__(self, **kwargs):
method __getitem__ (line 12) | def __getitem__(self, key):
method get (line 15) | def get(self, key, default=None):
method keys (line 18) | def keys(self):
function mock_simple_response (line 22) | def mock_simple_response(file_name):
function test__load (line 37) | def test__load(mock_document_intelligence, _):
function test_load_with_langchain_is_used_as_fallback (line 72) | def test_load_with_langchain_is_used_as_fallback(mock_load_with_langchai...
function test_content_cleaning (line 94) | def test_content_cleaning(mock_document_intelligence, _):
function test_table_without_headers (line 123) | def test_table_without_headers(mock_document_intelligence, _):
function test_document_with_multiple_pages_without_splitting_documents_by_page (line 151) | def test_document_with_multiple_pages_without_splitting_documents_by_page(
function test_document_with_multiple_pages_with_split_documents_by_page (line 183) | def test_document_with_multiple_pages_with_split_documents_by_page(
function test_excluding_paragraphs (line 223) | def test_excluding_paragraphs(mock_document_intelligence, _):
function test_get_file_paths (line 245) | def test_get_file_paths():
function test_get_file_paths_returns_according_to_glob (line 263) | def test_get_file_paths_returns_according_to_glob():
function test_get_file_paths_works_for_single_files (line 275) | def test_get_file_paths_works_for_single_files():
FILE: rag_experiment_accelerator/doc_loader/tests/test_docx_loader.py
function test_load_docx_files (line 7) | def test_load_docx_files():
FILE: rag_experiment_accelerator/doc_loader/textLoader.py
function load_text_files (line 12) | def load_text_files(
FILE: rag_experiment_accelerator/embedding/aoai_embedding_model.py
class AOAIEmbeddingModel (line 7) | class AOAIEmbeddingModel(EmbeddingModel):
method __init__ (line 23) | def __init__(
method _initialize_client (line 36) | def _initialize_client(self, environment: Environment) -> AzureOpenAI:
method generate_embedding (line 53) | def generate_embedding(self, chunk: str) -> list[float]:
FILE: rag_experiment_accelerator/embedding/embedding_model.py
class EmbeddingModel (line 4) | class EmbeddingModel(ABC):
method __init__ (line 19) | def __init__(self, name: str, dimension: int, **kwargs) -> None:
method generate_embedding (line 24) | def generate_embedding(self, chunk: str) -> list[float]:
method to_dict (line 36) | def to_dict(self) -> dict:
FILE: rag_experiment_accelerator/embedding/factory.py
function create_embedding_model (line 5) | def create_embedding_model(model_type: str, **kwargs):
FILE: rag_experiment_accelerator/embedding/st_embedding_model.py
class STEmbeddingModel (line 10) | class STEmbeddingModel(EmbeddingModel):
method __init__ (line 36) | def __init__(
method generate_embedding (line 66) | def generate_embedding(self, chunk: str) -> list[float]:
FILE: rag_experiment_accelerator/embedding/tests/test_aoai_embedding_model.py
function test_generate_embedding (line 12) | def test_generate_embedding(mock_client):
function test_emebdding_dimension_has_default (line 31) | def test_emebdding_dimension_has_default():
function test_can_set_embedding_dimension (line 37) | def test_can_set_embedding_dimension():
function test_generate_embeddings_no_shortening (line 46) | def test_generate_embeddings_no_shortening(mock_client):
function test_generate_embeddings_with_shortening (line 63) | def test_generate_embeddings_with_shortening(mock_client):
FILE: rag_experiment_accelerator/embedding/tests/test_factory.py
function test_create_aoai_embedding_model (line 9) | def test_create_aoai_embedding_model():
function test_create_st_embedding_model (line 24) | def test_create_st_embedding_model(mock_sentence_transformer):
function test_create_raises_invalid_embedding_type (line 38) | def test_create_raises_invalid_embedding_type():
FILE: rag_experiment_accelerator/embedding/tests/test_st_embedding_model.py
function test_generate_embedding (line 8) | def test_generate_embedding(mock_sentence_transformer):
function test_sentence_transformer_embedding_model_raises_non_existing_model (line 19) | def test_sentence_transformer_embedding_model_raises_non_existing_model():
function test_sentence_transformer_embedding_model_raises_unsupported_model (line 24) | def test_sentence_transformer_embedding_model_raises_unsupported_model():
function test_sentence_transformer_embedding_model_succeeds (line 30) | def test_sentence_transformer_embedding_model_succeeds(mock_sentence_tra...
FILE: rag_experiment_accelerator/evaluation/eval.py
function compute_metrics (line 44) | def compute_metrics(
function evaluate_single_prompt (line 129) | def evaluate_single_prompt(
function evaluate_prompts (line 178) | def evaluate_prompts(
FILE: rag_experiment_accelerator/evaluation/llm_based_metrics.py
function lower_and_strip (line 15) | def lower_and_strip(text):
function llm_answer_relevance (line 31) | def llm_answer_relevance(
function llm_context_precision (line 63) | def llm_context_precision(
function llm_context_recall (line 104) | def llm_context_recall(
function compute_llm_based_score (line 153) | def compute_llm_based_score(
FILE: rag_experiment_accelerator/evaluation/plain_metrics.py
function bleu (line 9) | def bleu(predictions: list[str], references: list[str]) -> float:
function fuzzy_score (line 33) | def fuzzy_score(str1: str, str2: str, match_type: str = "token_set_ratio...
function rouge_score (line 74) | def rouge_score(ground_truth: str, prediction: str, rouge_metric_name: s...
function levenshtein (line 110) | def levenshtein(str1: str, str2: str) -> int:
function jaccard (line 125) | def jaccard(str1: str, str2: str) -> int:
function hamming (line 140) | def hamming(str1: str, str2: str) -> int:
function jaro_winkler (line 155) | def jaro_winkler(str1: str, str2: str) -> int:
function cosine_ochiai (line 170) | def cosine_ochiai(str1: str, str2: str) -> float:
function lcsseq (line 185) | def lcsseq(str1: str, str2: str) -> int:
function lcsstr (line 200) | def lcsstr(str1: str, str2: str) -> int:
FILE: rag_experiment_accelerator/evaluation/plot_metrics.py
function generate_metrics (line 11) | def generate_metrics(experiment_name, run_id, mlflow_client):
function draw_hist_df (line 83) | def draw_hist_df(df, run_id, mlflow_client):
function plot_apk_scores (line 106) | def plot_apk_scores(df, run_id, mlflow_client):
function plot_mapk_scores (line 113) | def plot_mapk_scores(df, run_id, mlflow_client):
function plot_map_scores (line 119) | def plot_map_scores(df, run_id, mlflow_client):
function draw_search_chart (line 125) | def draw_search_chart(temp_df, run_id, mlflow_client):
FILE: rag_experiment_accelerator/evaluation/search_eval.py
function evaluate_search_result (line 11) | def evaluate_search_result(
FILE: rag_experiment_accelerator/evaluation/spacy_evaluator.py
class SpacyEvaluator (line 8) | class SpacyEvaluator:
method __init__ (line 25) | def __init__(self, similarity_threshold=0.8, model="en_core_web_lg") -...
method similarity (line 36) | def similarity(self, doc1: str, doc2: str):
method is_relevant (line 41) | def is_relevant(self, doc1: str, doc2: str):
FILE: rag_experiment_accelerator/evaluation/tests/test_llm_based_metrics.py
function test_llm_answer_relevance (line 12) | def test_llm_answer_relevance(mock_st, mock_generate_response):
function test_llm_context_precision (line 32) | def test_llm_context_precision(mock_generate_response):
function test_llm_context_recall (line 48) | def test_llm_context_recall(mock_generate_response):
FILE: rag_experiment_accelerator/evaluation/tests/test_plain_metrics.py
function test_fuzzy_score (line 18) | def test_fuzzy_score():
function test_levenshtein (line 26) | def test_levenshtein():
function test_jaccard (line 33) | def test_jaccard():
function test_hamming (line 40) | def test_hamming():
function test_jaro_winkler (line 47) | def test_jaro_winkler():
function test_cosine_ochiai (line 54) | def test_cosine_ochiai():
function test_rouge_score (line 61) | def test_rouge_score():
function test_lcsseq (line 81) | def test_lcsseq():
function test_lcsstr (line 88) | def test_lcsstr():
function test_bleu (line 96) | def test_bleu(mock_evaluate_load):
FILE: rag_experiment_accelerator/evaluation/tests/test_search_eval.py
function test_evaluate_search_result_calulates_precision_score (line 24) | def test_evaluate_search_result_calulates_precision_score():
function test_evaluate_search_result_calulates_recall_score (line 39) | def test_evaluate_search_result_calulates_recall_score():
function test_evaluate_search_result_returns_all_search_content (line 54) | def test_evaluate_search_result_returns_all_search_content():
FILE: rag_experiment_accelerator/evaluation/tests/test_spacy_evaluator.py
function test_evaluator_init (line 8) | def test_evaluator_init(mock_nlp):
function test_similarity_returns_similar (line 15) | def test_similarity_returns_similar(mock_nlp):
function test_is_relevant_returns_valid (line 32) | def test_is_relevant_returns_valid(mock_nlp, mock_similarity):
FILE: rag_experiment_accelerator/evaluation/tests/test_transformer_based_metrics.py
function test_compare_semantic_document_values (line 11) | def test_compare_semantic_document_values():
FILE: rag_experiment_accelerator/evaluation/transformer_based_metrics.py
function compare_semantic_document_values (line 16) | def compare_semantic_document_values(doc1, doc2, model_type):
function semantic_compare_values (line 33) | def semantic_compare_values(
function compute_transformer_based_score (line 56) | def compute_transformer_based_score(
FILE: rag_experiment_accelerator/ingest_data/acs_ingest.py
function my_hash (line 23) | def my_hash(s):
function upload_data (line 36) | def upload_data(
function generate_qna (line 92) | def generate_qna(environment, config, docs, azure_oai_deployment_name):
function generate_qna_for_chunk (line 139) | def generate_qna_for_chunk(chunk, response_generator):
function generate_multiple_questions (line 158) | def generate_multiple_questions(question, response_generator: ResponseGe...
function do_we_need_multiple_questions (line 176) | def do_we_need_multiple_questions(
function chunks_to_index_documents (line 198) | def chunks_to_index_documents(chunks):
FILE: rag_experiment_accelerator/ingest_data/tests/test_acs_ingest.py
function test_my_hash_with_string (line 19) | def test_my_hash_with_string():
function test_my_hash_with_empty_string (line 33) | def test_my_hash_with_empty_string():
function test_my_hash_with_numbers (line 47) | def test_my_hash_with_numbers():
function test_generate_title (line 62) | def test_generate_title(mock_response_generator):
function test_generate_summary (line 84) | def test_generate_summary(mock_response_generator):
function test_upload_data (line 108) | def test_upload_data(
function test_we_need_multiple_questions (line 153) | def test_we_need_multiple_questions(mock_response_generator):
function test_do_we_need_multiple_questions_true (line 173) | def test_do_we_need_multiple_questions_true(mock_response_generator):
function test_do_we_need_multiple_questions_false (line 193) | def test_do_we_need_multiple_questions_false(mock_response_generator):
FILE: rag_experiment_accelerator/init_Index/create_index.py
function create_acs_index (line 29) | def create_acs_index(
FILE: rag_experiment_accelerator/init_Index/tests/test_create_index.py
class TestCreateIndex (line 17) | class TestCreateIndex(unittest.TestCase):
method test_create_acs_index (line 27) | def test_create_acs_index(
method test_analyzer_name_alone (line 70) | def test_analyzer_name_alone(
method test_analyzer_with_index_and_search_analyzer (line 97) | def test_analyzer_with_index_and_search_analyzer(self):
method test_analyzer_with_index_or_search_analyzer (line 178) | def test_analyzer_with_index_or_search_analyzer(
method test_create_acs_index_analyzers_non_none (line 246) | def test_create_acs_index_analyzers_non_none(
method test_create_acs_index_analyzers_none (line 269) | def test_create_acs_index_analyzers_none(
method test_create_acs_index_invalid_parameters (line 291) | def test_create_acs_index_invalid_parameters(
method test_create_acs_index_create_or_update_index_fails (line 303) | def test_create_acs_index_create_or_update_index_fails(
method test_create_acs_index_create_or_update_index_returns_non_none (line 321) | def test_create_acs_index_create_or_update_index_returns_non_none(
method test_dimension_setting (line 345) | def test_dimension_setting(
FILE: rag_experiment_accelerator/io/exceptions.py
class WriteException (line 1) | class WriteException(Exception):
method __init__ (line 2) | def __init__(self, path: str, e: Exception):
class CopyException (line 10) | class CopyException(Exception):
method __init__ (line 11) | def __init__(self, src: str, dest: str, e: Exception):
FILE: rag_experiment_accelerator/io/loader.py
class Loader (line 4) | class Loader(ABC):
method load (line 10) | def load(self, src: str, **kwargs) -> list:
method can_handle (line 24) | def can_handle(self, src: str) -> bool:
method exists (line 37) | def exists(self, src: str) -> bool:
FILE: rag_experiment_accelerator/io/local/base.py
class LocalIOBase (line 4) | class LocalIOBase:
method exists (line 9) | def exists(self, path: str) -> bool:
FILE: rag_experiment_accelerator/io/local/loaders/jsonl_loader.py
class JsonlLoader (line 7) | class JsonlLoader(LocalLoader):
method load (line 10) | def load(self, path: str, **kwargs) -> list:
method can_handle (line 38) | def can_handle(self, path: str) -> bool:
FILE: rag_experiment_accelerator/io/local/loaders/local_loader.py
class LocalLoader (line 8) | class LocalLoader(LocalIOBase, Loader):
method load (line 29) | def load(self, src: str, **kwargs) -> list:
method can_handle (line 42) | def can_handle(self, src: str) -> bool:
method _get_file_ext (line 54) | def _get_file_ext(self, path: str):
FILE: rag_experiment_accelerator/io/local/loaders/tests/test_jsonl_loader.py
function temp_dir (line 11) | def temp_dir():
function test_loads (line 18) | def test_loads(temp_dir: str):
function test_loads_raises_file_not_found (line 32) | def test_loads_raises_file_not_found(temp_dir: str):
function test_can_handle_true (line 39) | def test_can_handle_true():
function test_can_handle_false (line 45) | def test_can_handle_false():
FILE: rag_experiment_accelerator/io/local/loaders/tests/test_local_loader.py
function test__get_file_ext (line 4) | def test__get_file_ext():
FILE: rag_experiment_accelerator/io/local/tests/test_local_io_base.py
function temp_dir (line 10) | def temp_dir():
function test_exists_true (line 17) | def test_exists_true(temp_dir: str) -> bool:
function test_exists_false (line 22) | def test_exists_false() -> bool:
FILE: rag_experiment_accelerator/io/local/writers/jsonl_writer.py
class JsonlWriter (line 9) | class JsonlWriter(LocalWriter):
method _write_file (line 23) | def _write_file(self, path: str, data, **kwargs):
FILE: rag_experiment_accelerator/io/local/writers/local_writer.py
class LocalWriter (line 15) | class LocalWriter(LocalIOBase, Writer):
method _make_dir (line 22) | def _make_dir(self, dir: str):
method _get_dirname (line 38) | def _get_dirname(self, path: str):
method _write_file (line 51) | def _write_file(path: str, data, **kwargs):
method write (line 65) | def write(self, path: str, data, **kwargs):
method copy (line 84) | def copy(self, src: str, dest: str, **kwargs):
method delete (line 108) | def delete(self, src: str):
method list_filenames (line 121) | def list_filenames(self, dir: str):
FILE: rag_experiment_accelerator/io/local/writers/tests/test_jsonl_writer.py
function temp_dir (line 13) | def temp_dir():
function test__write_file (line 20) | def test__write_file(temp_dir: str):
FILE: rag_experiment_accelerator/io/local/writers/tests/test_local_writer.py
function temp_dirname (line 13) | def temp_dirname():
function temp_dir (line 22) | def temp_dir():
function writer_impl (line 31) | def writer_impl():
function test__make_dir (line 45) | def test__make_dir(temp_dirname: str, writer_impl: LocalWriter):
function test__make_dir_raises (line 53) | def test__make_dir_raises(writer_impl: LocalWriter):
function test_write_calls__write_file (line 61) | def test_write_calls__write_file(temp_dir: str, writer_impl: LocalWriter):
function test_write_creates_parent_dir (line 72) | def test_write_creates_parent_dir(temp_dirname: str, writer_impl: LocalW...
function test_write_raises_write_exception (line 80) | def test_write_raises_write_exception(writer_impl: LocalWriter):
function test_copy (line 86) | def test_copy(temp_dirname: str, writer_impl: LocalWriter):
function test_copy_raises_copy_exception (line 101) | def test_copy_raises_copy_exception(temp_dirname: str, writer_impl: Loca...
function test_copy_raises_file_not_found (line 117) | def test_copy_raises_file_not_found(temp_dirname: str, writer_impl: Loca...
function test_delete (line 130) | def test_delete(temp_dirname: str, writer_impl: LocalWriter):
function test_list_filenames (line 144) | def test_list_filenames(temp_dirname: str, writer_impl: LocalWriter):
FILE: rag_experiment_accelerator/io/writer.py
class Writer (line 4) | class Writer(ABC):
method write (line 8) | def write(self, path: str, data, **kwargs):
method copy (line 22) | def copy(self, src: str, dest: str, **kwargs):
method delete (line 36) | def delete(self, src: str):
method exists (line 48) | def exists(self, path: str) -> bool:
FILE: rag_experiment_accelerator/llm/exceptions.py
class ContentFilteredException (line 1) | class ContentFilteredException(Exception):
FILE: rag_experiment_accelerator/llm/prompt/hyde_prompts.py
function validate_hypothetical_questions (line 9) | def validate_hypothetical_questions(text: str) -> bool:
FILE: rag_experiment_accelerator/llm/prompt/instruction_prompts.py
function validate_instruction_keyword (line 9) | def validate_instruction_keyword(text: str) -> bool:
function validate_instruction_entities (line 16) | def validate_instruction_entities(text: str) -> bool:
FILE: rag_experiment_accelerator/llm/prompt/multiprompts.py
function validate_do_we_need_multiple (line 5) | def validate_do_we_need_multiple(text: str) -> bool:
function validate_multiple_prompt (line 9) | def validate_multiple_prompt(text: str) -> bool:
FILE: rag_experiment_accelerator/llm/prompt/prompt.py
function _default_validation (line 13) | def _default_validation(x: any) -> bool:
class PromptTag (line 17) | class PromptTag(StrEnum):
class Prompt (line 24) | class Prompt:
method __init__ (line 29) | def __init__(
method arguments_in_prompt (line 46) | def arguments_in_prompt(prompt: str) -> set[str]:
method check_formatting_argument (line 52) | def check_formatting_argument(text: str, field: str) -> bool:
method _get_prompt_file_path (line 56) | def _get_prompt_file_path(prompt_file: str) -> str:
method _try_load_prompt_file (line 63) | def _try_load_prompt_file(prompt_file: str) -> str:
method update_system_prompt (line 88) | def update_system_prompt(self, system_message: str) -> "Prompt":
method update_user_prompt (line 93) | def update_user_prompt(self, user_template: str) -> "Prompt":
class CoTPrompt (line 99) | class CoTPrompt(Prompt):
method __init__ (line 100) | def __init__(
method _check_separator_declaration (line 129) | def _check_separator_declaration(
method update_system_prompt (line 151) | def update_system_prompt(self, system_message: str) -> Prompt:
class StructuredPrompt (line 160) | class StructuredPrompt(Prompt):
method __init__ (line 165) | def __init__(
class StructuredWithCoTPrompt (line 179) | class StructuredWithCoTPrompt(CoTPrompt, StructuredPrompt):
method __init__ (line 180) | def __init__(
FILE: rag_experiment_accelerator/llm/prompt/qna_prompts.py
function qna_generation_validate (line 9) | def qna_generation_validate(response: str) -> bool:
FILE: rag_experiment_accelerator/llm/prompt/ragas_prompts.py
function validate_context_precision (line 10) | def validate_context_precision(text: str) -> bool:
function validate_context_recall (line 14) | def validate_context_recall(text: str) -> bool:
FILE: rag_experiment_accelerator/llm/prompt/rerank_prompts.py
function validate_rerank (line 6) | def validate_rerank(text: str) -> bool:
FILE: rag_experiment_accelerator/llm/response_generator.py
class ResponseGenerator (line 32) | class ResponseGenerator:
method __init__ (line 33) | def __init__(self, environment: Environment, config: Config, deploymen...
method _initialize_azure_openai_client (line 41) | def _initialize_azure_openai_client(self, environment: Environment):
method _interpret_response (line 48) | def _interpret_response(self, response: str, prompt: Prompt) -> any:
method _get_response (line 87) | def _get_response(
method generate_response (line 120) | def generate_response(
FILE: rag_experiment_accelerator/llm/tests/test_response_generator.py
class TestResponseGenerator (line 14) | class TestResponseGenerator(unittest.TestCase):
method setUp (line 15) | def setUp(self):
method create_mock_prompt (line 25) | def create_mock_prompt(self, prompt_type, tags, separator=None, valida...
method test_interpret_response_with_cot_prompt (line 34) | def test_interpret_response_with_cot_prompt(self):
method test_interpret_response_with_structured_prompt (line 42) | def test_interpret_response_with_structured_prompt(self):
method test_interpret_response_with_invalid_separator (line 53) | def test_interpret_response_with_invalid_separator(self):
method test_interpret_response_non_strict_mode (line 61) | def test_interpret_response_non_strict_mode(self):
method test_get_response_normal (line 68) | def test_get_response_normal(self, mock_logger):
method test_get_response_content_filtered (line 83) | def test_get_response_content_filtered(self, mock_logger):
method test_get_response_retries_on_random_exception (line 96) | def test_get_response_retries_on_random_exception(self, mock_logger):
method test_generate_response_full_system_message (line 118) | def test_generate_response_full_system_message(self, mock_get_response):
method test_generate_response_full_user_template (line 134) | def test_generate_response_full_user_template(self, mock_get_response):
method test_generate_response_mixed_messages (line 150) | def test_generate_response_mixed_messages(self, mock_get_response):
method test_generate_response_missing_system_argument (line 166) | def test_generate_response_missing_system_argument(self, mock_get_resp...
method test_generate_response_missing_user_argument_non_strict (line 178) | def test_generate_response_missing_user_argument_non_strict(
method test_generate_response_exception_handling_strict (line 196) | def test_generate_response_exception_handling_strict(self, mock_get_re...
method test_initialize_azure_openai_client (line 208) | def test_initialize_azure_openai_client(self, mock_initialize_azure_op...
FILE: rag_experiment_accelerator/nlp/language_evaluator.py
class LanguageEvaluator (line 10) | class LanguageEvaluator:
method __init__ (line 41) | def __init__(
method check_string (line 63) | def check_string(self, input_string):
method detect_language (line 75) | def detect_language(self, text: str):
method is_confident (line 100) | def is_confident(self, text: str):
method is_language_match (line 108) | def is_language_match(self, text: str, language_code: str):
FILE: rag_experiment_accelerator/nlp/preprocess.py
class Preprocess (line 10) | class Preprocess:
method __init__ (line 13) | def __init__(self, enabled=False):
method preprocess (line 25) | def preprocess(self, text) -> str:
method remove_punctuation (line 50) | def remove_punctuation(self, text):
method remove_tags (line 62) | def remove_tags(self, text):
method sentence_tokenize (line 75) | def sentence_tokenize(self, text):
method word_tokenize (line 88) | def word_tokenize(self, text):
method remove_stop_words (line 100) | def remove_stop_words(self, sentence):
method lemmatize (line 117) | def lemmatize(self, text):
FILE: rag_experiment_accelerator/nlp/tests/test_language_evaluator.py
function test_language_evaluator_init (line 40) | def test_language_evaluator_init():
function test_detect_language (line 49) | def test_detect_language():
function test_detect_languages (line 60) | def test_detect_languages():
function test_is_confident_returns_certainty (line 74) | def test_is_confident_returns_certainty():
function test_is_language_match (line 84) | def test_is_language_match():
function test_check_string (line 93) | def test_check_string():
FILE: rag_experiment_accelerator/nlp/tests/test_preprocessor.py
function test_sentence_tokenize (line 7) | def test_sentence_tokenize(mock_nlp):
function test_word_tokenize (line 22) | def test_word_tokenize(mock_nlp):
function test_remove_stopwords (line 39) | def test_remove_stopwords(mock_nlp):
function test_lemmatize (line 71) | def test_lemmatize(mock_nlp):
function test_remove_punct (line 92) | def test_remove_punct(mock_nlp):
FILE: rag_experiment_accelerator/reranking/reranker.py
function cross_encoder_rerank_documents (line 12) | def cross_encoder_rerank_documents(
function llm_rerank_documents (line 46) | def llm_rerank_documents(
FILE: rag_experiment_accelerator/run/evaluation.py
function _flatten_dict_gen (line 17) | def _flatten_dict_gen(d, parent_key, sep):
function flatten_dict (line 26) | def flatten_dict(d: MutableMapping, parent_key: str = "", sep: str = "."):
function get_job_hyper_params (line 30) | def get_job_hyper_params(config: Config, index_config: IndexConfig) -> d...
function run (line 45) | def run(
FILE: rag_experiment_accelerator/run/index.py
function run (line 30) | def run(
function convert_docs_to_vector_db_records (line 103) | def convert_docs_to_vector_db_records(docs):
function embed_chunks (line 134) | def embed_chunks(config: Config, index_config: IndexConfig, pre_process,...
function embed_chunk (line 188) | def embed_chunk(pre_process, embedding_model, chunk):
function generate_titles_from_chunks (line 212) | def generate_titles_from_chunks(
function generate_summaries_from_chunks (line 253) | def generate_summaries_from_chunks(
function process_title (line 293) | def process_title(
function process_summary (line 333) | def process_summary(
function generate_title (line 373) | def generate_title(chunk, azure_oai_deployment_name, environment, config):
function generate_summary (line 393) | def generate_summary(chunk, azure_oai_deployment_name, environment, conf...
FILE: rag_experiment_accelerator/run/qa_generation.py
function run (line 23) | def run(
FILE: rag_experiment_accelerator/run/querying.py
function query_acs (line 73) | def query_acs(
function rerank_documents (line 106) | def rerank_documents(
function hyde (line 145) | def hyde(
function query_expansion (line 172) | def query_expansion(
function deduplicate_search_results (line 199) | def deduplicate_search_results(search_results: list[dict]) -> list[dict]:
class QueryAndEvalACSResult (line 217) | class QueryAndEvalACSResult:
method __init__ (line 218) | def __init__(self, documents: list[str], evaluations: dict[str, any]):
function query_and_eval_acs (line 223) | def query_and_eval_acs(
function filter_non_related_questions (line 286) | def filter_non_related_questions(
function query_and_eval_acs_multi (line 316) | def query_and_eval_acs_multi(
function query_and_eval_single_line (line 398) | def query_and_eval_single_line(
function get_query_output (line 469) | def get_query_output(
function run (line 560) | def run(
FILE: rag_experiment_accelerator/run/tests/test_index.py
function test_run (line 26) | def test_run(
FILE: rag_experiment_accelerator/run/tests/test_qa_generation.py
function test_run (line 12) | def test_run(
FILE: rag_experiment_accelerator/run/tests/test_querying.py
class TestQuerying (line 27) | class TestQuerying(unittest.TestCase):
method setUp (line 28) | def setUp(self):
method test_query_acs (line 77) | def test_query_acs(self, mock_search_mapping):
method test_rerank_documents (line 101) | def test_rerank_documents(
method test_query_and_eval_acs (line 121) | def test_query_and_eval_acs(
method test_query_and_eval_acs_multi_rerank (line 171) | def test_query_and_eval_acs_multi_rerank(
method test_query_and_eval_acs_multi_no_rerank (line 245) | def test_query_and_eval_acs_multi_no_rerank(
method test_run_no_multi_no_rerank (line 315) | def test_run_no_multi_no_rerank(
FILE: rag_experiment_accelerator/sampling/clustering.py
function load_parser (line 24) | def load_parser():
function spacy_tokenizer (line 41) | def spacy_tokenizer(sentence, parser):
function determine_optimum_k_elbow (line 65) | def determine_optimum_k_elbow(embeddings_2d, X, min_cluster, max_cluster...
function vectorize_tfidf (line 140) | def vectorize_tfidf(text, max_features):
function dataframe_to_chunk_dict (line 156) | def dataframe_to_chunk_dict(df_concat):
function chunk_dict_to_dataframe (line 174) | def chunk_dict_to_dataframe(all_chunks):
function cluster_kmeans (line 200) | def cluster_kmeans(embeddings_2d, optimum_k, df, result_dir):
function cluster (line 249) | def cluster(index_name, all_chunks, config: Config, parser):
FILE: rag_experiment_accelerator/sampling/tests/test_clustering.py
function mock_logger (line 11) | def mock_logger():
function mock_df (line 16) | def mock_df():
function mock_reducer (line 46) | def mock_reducer():
function mock_df_concat (line 51) | def mock_df_concat():
function mock_data_dir (line 70) | def mock_data_dir(tmpdir):
function test_cluster (line 74) | def test_cluster(mock_logger, mock_df, mock_reducer, mock_df_concat, moc...
FILE: rag_experiment_accelerator/search_type/acs_search_methods.py
function create_client (line 18) | def create_client(service_endpoint, index_name, key):
function format_results (line 38) | def format_results(results):
function search_for_match_semantic (line 58) | def search_for_match_semantic(
function search_for_match_Hybrid_multi (line 117) | def search_for_match_Hybrid_multi(
function search_for_match_Hybrid_cross (line 173) | def search_for_match_Hybrid_cross(
function search_for_match_text (line 222) | def search_for_match_text(
function search_for_match_pure_vector (line 255) | def search_for_match_pure_vector(
function search_for_match_pure_vector_multi (line 298) | def search_for_match_pure_vector_multi(
function search_for_match_pure_vector_cross (line 352) | def search_for_match_pure_vector_cross(
function search_for_manual_hybrid (line 396) | def search_for_manual_hybrid(**kwargs):
FILE: rag_experiment_accelerator/search_type/tests/test_acs_search_methods.py
function test_create_client (line 26) | def test_create_client(mock_azure_key_credential, mock_search_client):
function test_format_results (line 45) | def test_format_results():
function test_search_for_match_semantic (line 59) | def test_search_for_match_semantic(mock_vector_query):
function test_search_for_match_semantic_handles_exception (line 122) | def test_search_for_match_semantic_handles_exception(mock_logger, mock_v...
function test_search_for_match_Hybrid_multi (line 152) | def test_search_for_match_Hybrid_multi(mock_vector_query):
function test_search_for_match_Hybrid_multi_handles_exception (line 215) | def test_search_for_match_Hybrid_multi_handles_exception(
function test_search_for_match_Hybrid_cross (line 262) | def test_search_for_match_Hybrid_cross(mock_vector_query):
function test_search_for_match_Hybrid_cross_handles_exception (line 320) | def test_search_for_match_Hybrid_cross_handles_exception(
function test_search_for_match_text (line 368) | def test_search_for_match_text():
function test_search_for_match_text_handles_exception (line 404) | def test_search_for_match_text_handles_exception(mock_logger):
function test_search_for_match_pure_vector (line 430) | def test_search_for_match_pure_vector(mock_vector_query):
function test_search_for_match_pure_vector_handles_exception (line 483) | def test_search_for_match_pure_vector_handles_exception(
function test_search_for_match_pure_vector_multi (line 528) | def test_search_for_match_pure_vector_multi(mock_vector_query):
function test_search_for_match_pure_vector_multi_handles_exception (line 584) | def test_search_for_match_pure_vector_multi_handles_exception(
function test_search_for_match_pure_vector_cross (line 631) | def test_search_for_match_pure_vector_cross(mock_vector_query):
function test_search_for_match_pure_vector_cross_handles_exception (line 687) | def test_search_for_match_pure_vector_cross_handles_exception(
function test_search_for_manual_hybrid (line 737) | def test_search_for_manual_hybrid(
FILE: rag_experiment_accelerator/utils/auth.py
function get_default_az_cred (line 8) | def get_default_az_cred():
FILE: rag_experiment_accelerator/utils/logging.py
function get_logger (line 9) | def get_logger(name: str) -> logging.Logger:
FILE: rag_experiment_accelerator/utils/timetook.py
class TimeTook (line 5) | class TimeTook(object):
method __init__ (line 14) | def __init__(self, description, logger):
method __enter__ (line 20) | def __enter__(self):
method __exit__ (line 24) | def __exit__(self, type, value, traceback):
Condensed preview — 242 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,167K chars).
[
{
"path": ".coveragerc",
"chars": 30,
"preview": "[run]\nomit =\n */__init__.py"
},
{
"path": ".devcontainer/devcontainer.json",
"chars": 633,
"preview": "{\n\t\"name\": \"RAG Experiment Accelerator\",\n\t\"image\": \"mcr.microsoft.com/devcontainers/python:1-3.11-bullseye\",\n\t\"features\""
},
{
"path": ".devcontainer/post-create.sh",
"chars": 299,
"preview": "#!/bin/bash\n\npip install --upgrade pip\n\npip install -r requirements.txt\n\npip install -r dev-requirements.txt\n\npython -m "
},
{
"path": ".flake8",
"chars": 57,
"preview": "[flake8]\nmax-line-length = 120\nextend-ignore = E203, E501"
},
{
"path": ".github/actions/configure_azureml_agent/action.yml",
"chars": 623,
"preview": "name: Prepare build environment\n\ndescription: Prepares build environment for python and prompt flow related workflow exe"
},
{
"path": ".github/dependabot.yml",
"chars": 560,
"preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
},
{
"path": ".github/workflows/build_validation_workflow.yml",
"chars": 1478,
"preview": "name: Build validation\n\non:\n workflow_call:\n workflow_dispatch:\n pull_request:\n branches:\n - main\n - dev"
},
{
"path": ".github/workflows/rag_exp_acc_ci.yml",
"chars": 2517,
"preview": "name: RAG Experiment Accelerator CI\n\non:\n workflow_call:\n workflow_dispatch:\n pull_request:\n types: [opened, ready"
},
{
"path": ".gitignore",
"chars": 3615,
"preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
},
{
"path": ".pre-commit-config.yaml",
"chars": 861,
"preview": "repos:\n - repo: https://github.com/psf/black\n rev: 23.12.1\n hooks:\n - id: black\n language_version: py"
},
{
"path": "01_index.py",
"chars": 1883,
"preview": "import json\nimport argparse\nimport mlflow\n\nfrom azureml.pipeline import initialise_mlflow_client\n\nfrom rag_experiment_ac"
},
{
"path": "02_qa_generation.py",
"chars": 873,
"preview": "import argparse\n\nfrom rag_experiment_accelerator.checkpoint import init_checkpoint\nfrom rag_experiment_accelerator.run.q"
},
{
"path": "03_querying.py",
"chars": 1835,
"preview": "import argparse\nimport mlflow\nfrom azureml.pipeline import initialise_mlflow_client\n\nfrom rag_experiment_accelerator.che"
},
{
"path": "04_evaluation.py",
"chars": 1383,
"preview": "import argparse\n\nimport mlflow\n\nfrom azureml.pipeline import initialise_mlflow_client\nfrom rag_experiment_accelerator.co"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 444,
"preview": "# Microsoft Open Source Code of Conduct\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://op"
},
{
"path": "LICENSE",
"chars": 206672,
"preview": " MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any pers"
},
{
"path": "Makefile",
"chars": 3088,
"preview": ".PHONY: all index qnagen query eval help azureml clear_docs clear_artifacts test flake updatekv\n.DEFAULT_GOAL := help\n\n#"
},
{
"path": "README.md",
"chars": 38071,
"preview": "# RAG Experiment Accelerator\n\n## Overview\n\nThe **RAG Experiment Accelerator** is a versatile tool that helps you conduct"
},
{
"path": "SECURITY.md",
"chars": 2656,
"preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.9 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products an"
},
{
"path": "SUPPORT.md",
"chars": 1244,
"preview": "# TODO: The maintainer of this repo has not yet edited this file\r\n\r\n**REPO OWNER**: Do you want Customer Service & Suppo"
},
{
"path": "azure.yaml",
"chars": 189,
"preview": "# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json\n\nnam"
},
{
"path": "azureml/eval.py",
"chars": 2103,
"preview": "import os\nimport sys\nimport argparse\nimport mlflow\n\nproject_dir = os.path.abspath(os.path.join(os.path.dirname(__file__)"
},
{
"path": "azureml/index.py",
"chars": 2025,
"preview": "from rag_experiment_accelerator.checkpoint import init_checkpoint\nimport os\nimport sys\nimport argparse\n\nimport mlflow\n\np"
},
{
"path": "azureml/pipeline.py",
"chars": 10541,
"preview": "import os\nimport sys\nimport argparse\nfrom azure.ai.ml import MLClient, Input, Output, dsl, command\nfrom azure.ai.ml.para"
},
{
"path": "azureml/query.py",
"chars": 2176,
"preview": "import os\nimport sys\nimport argparse\n\nimport mlflow\n\nproject_dir = os.path.abspath(os.path.join(os.path.dirname(__file__"
},
{
"path": "config.sample.json",
"chars": 2633,
"preview": "{\n \"$schema\": \"https://raw.githubusercontent.com/microsoft/rag-experiment-accelerator/development/config.schema.json\""
},
{
"path": "config.schema.json",
"chars": 24004,
"preview": "{\n \"$schema\": \"http://json-schema.org/draft-06/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"experimen"
},
{
"path": "cspell.json",
"chars": 940,
"preview": "{\n \"version\": \"0.2\",\n \"ignorePaths\": [],\n \"dictionaryDefinitions\": [],\n \"dictionaries\": [],\n \"words\": [\n "
},
{
"path": "dev-requirements.txt",
"chars": 121,
"preview": "promptflow==1.15.0\npromptflow-tools==1.4.0\npytest==8.3.3\npytest-cov==5.0.0\nflake8==7.1.1\npre-commit==3.8.0\nblack==24.8.0"
},
{
"path": "docs/azureml-pipeline.md",
"chars": 5144,
"preview": "# AzureML Pipeline\r\n\r\n## What is it\r\n\r\nRAG Experiment Accelerator supports running the pipeline on Azure ML compute, in "
},
{
"path": "docs/configs-appendix.md",
"chars": 2468,
"preview": "# Understanding the config files\n\n## Prerequisites\nFamiliarity with [ReadMe configuration of elements](/README.md#Descri"
},
{
"path": "docs/environment-variables.md",
"chars": 3725,
"preview": "# Resource Deployment and Environment Variables\n\n## Required Resources\n\nTo use the rag-experiment-accelerator, create th"
},
{
"path": "docs/evaluation-metrics.md",
"chars": 10427,
"preview": "# Evaluation Metrics\n\nThe following is an overview of the available evaluation metrics that can be used to evaluate end-"
},
{
"path": "docs/script-inputs-outputs.md",
"chars": 3877,
"preview": "# Script Overview\n\nThis document provides an overview of the scripts that are used to run the RAG Experiment Accelerator"
},
{
"path": "docs/wsl.md",
"chars": 1704,
"preview": "# Setting up WSL\n\nThere are numerous guides to setting up WSL, and this is not a comprehensive guide. Instead this might"
},
{
"path": "env_to_keyvault.py",
"chars": 929,
"preview": "\"\"\"\nThis script is used to create secrets in Azure Keyvault from the environment variables.\n\nFor the list of environment"
},
{
"path": "experimental/readme.md",
"chars": 175,
"preview": "\nRAG EXPERIMENT ACCELERATOR EXPERIMENTAL\n\nThis is the experimental version of the RAG Experiment Accelerator. It is a wo"
},
{
"path": "images/AzureMLPipeline.drawio",
"chars": 11470,
"preview": "<mxfile host=\"app.diagrams.net\" modified=\"2024-03-15T10:47:30.734Z\" agent=\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_"
},
{
"path": "infra/abbreviations.json",
"chars": 5338,
"preview": "{\n \"analysisServicesServers\": \"as\",\n \"apiManagementService\": \"apim-\",\n \"appConfigurationConfigurationStores\": \""
},
{
"path": "infra/generate_arm_template.sh",
"chars": 635,
"preview": "#!/usr/bin/env bash\n\nset -e\n\naz bicep version 2>/dev/null || az bicep install\n\nTEMPLATES=()\nFILES=()\n\nfor ARG in $@; do\n"
},
{
"path": "infra/main.bicep",
"chars": 8672,
"preview": "targetScope = 'subscription'\n\n@minLength(1)\n@maxLength(64)\n@description('Name of the the environment which is used to ge"
},
{
"path": "infra/main.bicepparam",
"chars": 255,
"preview": "using './main.bicep'\n\nparam environmentName = readEnvironmentVariable('AZURE_ENV_NAME', 'env_name')\n\nparam location = re"
},
{
"path": "infra/main.json",
"chars": 56839,
"preview": "{\n \"$schema\": \"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#\",\n \"content"
},
{
"path": "infra/network/azure_bastion.bicep",
"chars": 743,
"preview": "param vnetName string\nparam bastionName string\nparam bastionSubnetName string\nparam location string\nparam publicIpName s"
},
{
"path": "infra/network/network_isolation.bicep",
"chars": 1361,
"preview": "param vnetName string\nparam location string\n\n@minLength(1)\nparam vnetAddressSpace string\nparam proxySubnetName string\n\n@"
},
{
"path": "infra/shared/cognitiveservices.bicep",
"chars": 1474,
"preview": "metadata description = 'Creates an Azure Cognitive Services instance.'\nparam name string\nparam location string = resourc"
},
{
"path": "infra/shared/keyvault-secret.bicep",
"chars": 789,
"preview": "metadata description = 'Creates or updates a secret in an Azure Key Vault.'\nparam name string\nparam tags object = {}\npar"
},
{
"path": "infra/shared/keyvault.bicep",
"chars": 914,
"preview": "param name string\nparam location string = resourceGroup().location\nparam tags object = {}\n\n@description('Service princip"
},
{
"path": "infra/shared/machineLearning.bicep",
"chars": 683,
"preview": "metadata description = 'Creates an Azure Machine Learning Workspace.'\nparam name string\nparam location string = resource"
},
{
"path": "infra/shared/monitoring.bicep",
"chars": 915,
"preview": "param logAnalyticsName string\nparam applicationInsightsName string\nparam location string = resourceGroup().location\npara"
},
{
"path": "infra/shared/search-services.bicep",
"chars": 1338,
"preview": "metadata description = 'Creates an Azure AI Search instance.'\nparam name string\nparam location string = resourceGroup()."
},
{
"path": "infra/shared/storage.bicep",
"chars": 2329,
"preview": "metadata description = 'Creates an Azure storage account.'\nparam name string\nparam location string = resourceGroup().loc"
},
{
"path": "infra/shared/storekeys.bicep",
"chars": 1795,
"preview": "param keyVaultName string = ''\nparam azureOpenAIName string = ''\nparam documentIntelligenceName string = ''\nparam azureA"
},
{
"path": "promptflow/rag-experiment-accelerator/README.md",
"chars": 10985,
"preview": "# **RAG Experiment Accelerator** with Prompt Flow\n\n## Flow description\nThe RAG Experiment Accelerator is a versatile too"
},
{
"path": "promptflow/rag-experiment-accelerator/custom_environment/Dockerfile",
"chars": 251,
"preview": "FROM mcr.microsoft.com/azureml/promptflow/promptflow-runtime:20231207.v2\nCOPY ./rag_experiment_accelerator-0.9-py3-none-"
},
{
"path": "promptflow/rag-experiment-accelerator/custom_environment/environment.yaml",
"chars": 139,
"preview": "$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json\nname: rag-experiment-accelerator-environmen"
},
{
"path": "promptflow/rag-experiment-accelerator/env_setup.md",
"chars": 2103,
"preview": "# Promptflow Secret Setup\n\n## Prerequisites\nInstall the dev-requirements and login to the az cli.\n``` bash\n# Install the"
},
{
"path": "promptflow/rag-experiment-accelerator/evaluation/evaluation.py",
"chars": 1134,
"preview": "from promptflow import tool\r\nimport mlflow\r\n\r\nfrom rag_experiment_accelerator.evaluation.eval import get_run_tags\r\nfrom "
},
{
"path": "promptflow/rag-experiment-accelerator/evaluation/flow.dag.yaml",
"chars": 379,
"preview": "inputs:\n config_dir:\n type: string\n default: ../\noutputs: {}\nnodes:\n- name: setup_env\n type: python\n source:\n "
},
{
"path": "promptflow/rag-experiment-accelerator/flow.dag.yaml",
"chars": 1155,
"preview": "inputs:\n should_index:\n type: bool\n default: true\n config_dir:\n type: string\n default: ../..\n should_gene"
},
{
"path": "promptflow/rag-experiment-accelerator/index/create_index.py",
"chars": 793,
"preview": "from promptflow import tool\r\nfrom rag_experiment_accelerator.checkpoint import init_checkpoint\r\nfrom rag_experiment_acce"
},
{
"path": "promptflow/rag-experiment-accelerator/index/flow.dag.yaml",
"chars": 455,
"preview": "inputs:\n config_dir:\n type: string\n default: ../\n should_index:\n type: bool\n default: true\noutputs: {}\nnod"
},
{
"path": "promptflow/rag-experiment-accelerator/qa_generation/flow.dag.yaml",
"chars": 381,
"preview": "inputs:\n config_dir:\n type: string\n default: ../\noutputs: {}\nnodes:\n- name: setup_env\n type: python\n source:\n "
},
{
"path": "promptflow/rag-experiment-accelerator/qa_generation/generate_qa.py",
"chars": 613,
"preview": "from promptflow import tool\r\nfrom rag_experiment_accelerator.run.qa_generation import run\r\nfrom rag_experiment_accelerat"
},
{
"path": "promptflow/rag-experiment-accelerator/querying/flow.dag.yaml",
"chars": 375,
"preview": "inputs:\n config_dir:\n type: string\n default: ../\noutputs: {}\nnodes:\n- name: setup_env\n type: python\n source:\n "
},
{
"path": "promptflow/rag-experiment-accelerator/querying/querying.py",
"chars": 503,
"preview": "from promptflow import tool\r\nfrom rag_experiment_accelerator.run.querying import run\r\nfrom rag_experiment_accelerator.co"
},
{
"path": "promptflow/rag-experiment-accelerator/setup/flow.dag.yaml",
"chars": 111,
"preview": "inputs: {}\noutputs: {}\nnodes:\n- name: setup_env\n type: python\n source:\n type: code\n path: setup_env.py\n"
},
{
"path": "promptflow/rag-experiment-accelerator/setup/setup_env.py",
"chars": 1407,
"preview": "import os\n\nfrom promptflow.connections import CustomConnection\n\nfrom promptflow import tool\n\n\n@tool\ndef my_python_tool(c"
},
{
"path": "pyproject.toml",
"chars": 285,
"preview": "[tool.pylic]\nsafe_licenses = [\n \"Apache Software License\",\n \"Apache License 2.0\",\n \"MIT License\",\n \"Python S"
},
{
"path": "rag_experiment_accelerator/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/artifact/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/artifact/handlers/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/artifact/handlers/artifact_handler.py",
"chars": 3559,
"preview": "import time\n\nfrom rag_experiment_accelerator.artifact.handlers.exceptions import LoadException\nfrom rag_experiment_accel"
},
{
"path": "rag_experiment_accelerator/artifact/handlers/exceptions.py",
"chars": 192,
"preview": "class LoadException(Exception):\n def __init__(self, path: str):\n super().__init__(\n f\"Cannot load a"
},
{
"path": "rag_experiment_accelerator/artifact/handlers/query_output_handler.py",
"chars": 3639,
"preview": "from rag_experiment_accelerator.artifact.handlers.artifact_handler import (\n ArtifactHandler,\n)\nfrom rag_experiment_a"
},
{
"path": "rag_experiment_accelerator/artifact/handlers/tests/test_artifact_handler.py",
"chars": 2572,
"preview": "from unittest.mock import Mock\nimport pytest\n\nfrom rag_experiment_accelerator.artifact.handlers.artifact_handler import "
},
{
"path": "rag_experiment_accelerator/artifact/handlers/tests/test_query_output_handler.py",
"chars": 4725,
"preview": "from unittest.mock import patch\n\nimport pytest\n\nfrom rag_experiment_accelerator.artifact.handlers.query_output_handler i"
},
{
"path": "rag_experiment_accelerator/artifact/handlers/typing.py",
"chars": 202,
"preview": "from typing import TypeVar\nfrom rag_experiment_accelerator.io.loader import Loader\nfrom rag_experiment_accelerator.io.wr"
},
{
"path": "rag_experiment_accelerator/artifact/models/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/artifact/models/query_output.py",
"chars": 1962,
"preview": "class QueryOutput:\n \"\"\"\n Represents the output of a query.\n\n Attributes:\n rerank (bool): Indicates wheth"
},
{
"path": "rag_experiment_accelerator/checkpoint/README.md",
"chars": 2125,
"preview": "# Checkpoints\n\n## What is a checkpoint?\nCheckpoints are used to skip the processing of data that has already been proces"
},
{
"path": "rag_experiment_accelerator/checkpoint/__init__.py",
"chars": 238,
"preview": "# flake8: noqa: F401\n\nfrom rag_experiment_accelerator.checkpoint.checkpoint_factory import (\n init_checkpoint,\n ge"
},
{
"path": "rag_experiment_accelerator/checkpoint/checkpoint.py",
"chars": 2896,
"preview": "from abc import ABC, abstractmethod\nfrom typing import Any\nfrom rag_experiment_accelerator.utils.logging import get_logg"
},
{
"path": "rag_experiment_accelerator/checkpoint/checkpoint_decorator.py",
"chars": 1410,
"preview": "from rag_experiment_accelerator.checkpoint.checkpoint_factory import get_checkpoint\n\n\ndef cache_with_checkpoint(id=None)"
},
{
"path": "rag_experiment_accelerator/checkpoint/checkpoint_factory.py",
"chars": 1317,
"preview": "from rag_experiment_accelerator.config.config import Config, ExecutionEnvironment\n\nglobal _checkpoint_instance\n_checkpoi"
},
{
"path": "rag_experiment_accelerator/checkpoint/local_storage_checkpoint.py",
"chars": 1823,
"preview": "import os\nimport pickle\nimport hashlib\n\nfrom typing import Any, List, Set\nfrom rag_experiment_accelerator.checkpoint.che"
},
{
"path": "rag_experiment_accelerator/checkpoint/null_checkpoint.py",
"chars": 499,
"preview": "from typing import Any\nfrom rag_experiment_accelerator.checkpoint.checkpoint import Checkpoint\n\n\nclass NullCheckpoint(Ch"
},
{
"path": "rag_experiment_accelerator/checkpoint/tests/test_checkpoint.py",
"chars": 2234,
"preview": "from unittest.mock import MagicMock\nimport pytest\nfrom unittest.mock import patch\n\nfrom rag_experiment_accelerator.check"
},
{
"path": "rag_experiment_accelerator/checkpoint/tests/test_local_storage_checkpoint.py",
"chars": 1318,
"preview": "import unittest\nimport os\nimport tempfile\nimport shutil\nfrom unittest.mock import MagicMock\n\nfrom rag_experiment_acceler"
},
{
"path": "rag_experiment_accelerator/checkpoint/tests/test_null_checkpoint.py",
"chars": 605,
"preview": "import unittest\n\nfrom rag_experiment_accelerator.checkpoint.null_checkpoint import NullCheckpoint\n\n\ndef dummy(word):\n "
},
{
"path": "rag_experiment_accelerator/config/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/config/base_config.py",
"chars": 3442,
"preview": "from copy import deepcopy\nfrom typing import get_type_hints\nfrom itertools import product\n\nimport random\n\n\nfrom rag_expe"
},
{
"path": "rag_experiment_accelerator/config/chunking_config.py",
"chars": 736,
"preview": "from enum import StrEnum\nfrom dataclasses import dataclass\nfrom rag_experiment_accelerator.config.base_config import Bas"
},
{
"path": "rag_experiment_accelerator/config/config.py",
"chars": 5086,
"preview": "from enum import StrEnum\nimport json\nimport os\n\nfrom dataclasses import dataclass, field\n\nfrom rag_experiment_accelerato"
},
{
"path": "rag_experiment_accelerator/config/config_validator.py",
"chars": 2060,
"preview": "import json\nimport os\nfrom jsonschema import ValidationError, validate\nimport requests\n\nschema_cache = {}\n\n\ndef fetch_js"
},
{
"path": "rag_experiment_accelerator/config/embedding_model_config.py",
"chars": 300,
"preview": "from dataclasses import dataclass\nfrom rag_experiment_accelerator.config.base_config import BaseConfig\n\n\n@dataclass\nclas"
},
{
"path": "rag_experiment_accelerator/config/environment.py",
"chars": 7423,
"preview": "import os\nfrom typing import Optional\nfrom dataclasses import dataclass\n\nfrom dotenv import load_dotenv\nfrom azure.keyva"
},
{
"path": "rag_experiment_accelerator/config/eval_config.py",
"chars": 463,
"preview": "from dataclasses import dataclass, field\nfrom rag_experiment_accelerator.config.base_config import BaseConfig\n\n\n@datacla"
},
{
"path": "rag_experiment_accelerator/config/index_config.py",
"chars": 5383,
"preview": "from dataclasses import dataclass, field\nfrom enum import StrEnum\n\nfrom rag_experiment_accelerator.config.base_config im"
},
{
"path": "rag_experiment_accelerator/config/language_config.py",
"chars": 613,
"preview": "from dataclasses import dataclass, field\nfrom rag_experiment_accelerator.config.base_config import BaseConfig\n\n\n@datacla"
},
{
"path": "rag_experiment_accelerator/config/openai_config.py",
"chars": 291,
"preview": "from dataclasses import dataclass\nfrom rag_experiment_accelerator.config.base_config import BaseConfig\n\n\n@dataclass\nclas"
},
{
"path": "rag_experiment_accelerator/config/path_config.py",
"chars": 2311,
"preview": "from dataclasses import dataclass\nimport os\nfrom rag_experiment_accelerator.config import paths\nfrom rag_experiment_acce"
},
{
"path": "rag_experiment_accelerator/config/paths.py",
"chars": 1273,
"preview": "import os\nimport glob\nfrom datetime import datetime\n\nfrom rag_experiment_accelerator.utils.logging import get_logger\n\n\nl"
},
{
"path": "rag_experiment_accelerator/config/query_expansion.py",
"chars": 389,
"preview": "from dataclasses import dataclass\nfrom rag_experiment_accelerator.config.base_config import BaseConfig\n\n\n@dataclass\nclas"
},
{
"path": "rag_experiment_accelerator/config/rerank_config.py",
"chars": 353,
"preview": "from dataclasses import dataclass\nfrom rag_experiment_accelerator.config.base_config import BaseConfig\n\n\n@dataclass\nclas"
},
{
"path": "rag_experiment_accelerator/config/sampling_config.py",
"chars": 749,
"preview": "from dataclasses import dataclass\nfrom rag_experiment_accelerator.config.base_config import BaseConfig\n\n\n@dataclass\nclas"
},
{
"path": "rag_experiment_accelerator/config/search_config.py",
"chars": 282,
"preview": "from dataclasses import dataclass\nfrom rag_experiment_accelerator.config.base_config import BaseConfig\n\n\n@dataclass\nclas"
},
{
"path": "rag_experiment_accelerator/config/tests/test_config.py",
"chars": 10155,
"preview": "import pytest\nimport json\nimport os\nfrom unittest.mock import MagicMock, patch\n\nfrom rag_experiment_accelerator.config.c"
},
{
"path": "rag_experiment_accelerator/config/tests/test_config_validator.py",
"chars": 7821,
"preview": "from jsonschema import ValidationError\nfrom unittest.mock import MagicMock, mock_open, patch\nimport pytest\nimport os\nimp"
},
{
"path": "rag_experiment_accelerator/config/tests/test_environment.py",
"chars": 5307,
"preview": "from unittest.mock import patch, MagicMock\nfrom typing import Optional\n\nfrom azure.keyvault.secrets import SecretClient\n"
},
{
"path": "rag_experiment_accelerator/config/tests/test_index_config.py",
"chars": 3576,
"preview": "from rag_experiment_accelerator.config.chunking_config import ChunkingConfig\nfrom rag_experiment_accelerator.config.embe"
},
{
"path": "rag_experiment_accelerator/data_assets/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/data_assets/data_asset.py",
"chars": 1441,
"preview": "from azure.ai.ml import MLClient\nfrom azure.ai.ml.entities import Data\nfrom azure.ai.ml.constants import AssetTypes\n\nfro"
},
{
"path": "rag_experiment_accelerator/doc_loader/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/doc_loader/customJsonLoader.py",
"chars": 2086,
"preview": "import json\nfrom pathlib import Path\nfrom typing import Union\n\nfrom langchain.docstore.document import Document\nfrom lan"
},
{
"path": "rag_experiment_accelerator/doc_loader/documentIntelligenceLoader.py",
"chars": 16148,
"preview": "from concurrent.futures import ThreadPoolExecutor, as_completed\nfrom contextlib import ExitStack\nimport re\nimport os\nimp"
},
{
"path": "rag_experiment_accelerator/doc_loader/documentLoader.py",
"chars": 3965,
"preview": "from rag_experiment_accelerator.doc_loader.docxLoader import load_docx_files\nfrom rag_experiment_accelerator.doc_loader."
},
{
"path": "rag_experiment_accelerator/doc_loader/docxLoader.py",
"chars": 1211,
"preview": "from langchain_community.document_loaders import Docx2txtLoader\n\nfrom rag_experiment_accelerator.doc_loader.structuredLo"
},
{
"path": "rag_experiment_accelerator/doc_loader/htmlLoader.py",
"chars": 1415,
"preview": "from langchain_community.document_loaders import BSHTMLLoader\n\nfrom rag_experiment_accelerator.doc_loader.structuredLoad"
},
{
"path": "rag_experiment_accelerator/doc_loader/jsonLoader.py",
"chars": 1357,
"preview": "from rag_experiment_accelerator.doc_loader.customJsonLoader import (\n CustomJSONLoader,\n)\nfrom rag_experiment_acceler"
},
{
"path": "rag_experiment_accelerator/doc_loader/markdownLoader.py",
"chars": 1256,
"preview": "from langchain_community.document_loaders import UnstructuredMarkdownLoader\n\nfrom rag_experiment_accelerator.doc_loader."
},
{
"path": "rag_experiment_accelerator/doc_loader/pdfLoader.py",
"chars": 2926,
"preview": "import uuid\nimport re\n\nfrom langchain_community.document_loaders import PyPDFLoader\nfrom langchain.text_splitter import "
},
{
"path": "rag_experiment_accelerator/doc_loader/structuredLoader.py",
"chars": 2441,
"preview": "import uuid\n\nfrom langchain.document_loaders.base import BaseLoader\nfrom langchain.text_splitter import RecursiveCharact"
},
{
"path": "rag_experiment_accelerator/doc_loader/tests/test_custom_html_loader.py",
"chars": 767,
"preview": "from unittest.mock import Mock\n\nfrom rag_experiment_accelerator.doc_loader.htmlLoader import load_html_files\nfrom rag_ex"
},
{
"path": "rag_experiment_accelerator/doc_loader/tests/test_custom_json_loader.py",
"chars": 3219,
"preview": "import os\nimport pytest\n\nfrom rag_experiment_accelerator.doc_loader.customJsonLoader import (\n CustomJSONLoader,\n)\nfr"
},
{
"path": "rag_experiment_accelerator/doc_loader/tests/test_data/document_intelligence_response/multiple_pages.json",
"chars": 47790,
"preview": "{\n \"apiVersion\": \"2023-10-31-preview\",\n \"modelId\": \"prebuilt-layout\",\n \"content\": \"Title for page number one So"
},
{
"path": "rag_experiment_accelerator/doc_loader/tests/test_data/document_intelligence_response/simple_response.json",
"chars": 47075,
"preview": "{\n \"apiVersion\": \"2023-10-31-preview\",\n \"modelId\": \"prebuilt-layout\",\n \"content\": \"This is the Title\\n\\\\nSome t"
},
{
"path": "rag_experiment_accelerator/doc_loader/tests/test_data/document_intelligence_response/table_without_headers.json",
"chars": 34648,
"preview": "{\n \"apiVersion\": \"2023-10-31-preview\",\n \"modelId\": \"prebuilt-layout\",\n \"content\": \"Table without Headers\\n===\\\\"
},
{
"path": "rag_experiment_accelerator/doc_loader/tests/test_data/json/data.bad.invalid_keys.json",
"chars": 134,
"preview": "[\n {\n \"title\": \"Contains 'contents' key instead of 'content'\",\n \"contents\": \"This is the content for it"
},
{
"path": "rag_experiment_accelerator/doc_loader/tests/test_data/json/data.bad.not_a_list.json",
"chars": 90,
"preview": "{\n \"title\": \"Data should be a list\",\n \"content\": \"This is the content for item 1.\"\n}"
},
{
"path": "rag_experiment_accelerator/doc_loader/tests/test_data/json/data.valid.json",
"chars": 1657,
"preview": "[\n {\n \"item_id\": \"1\",\n \"title\": \"Title TEST 1\",\n \"content\": \"This is the content for item 1.\",\n \"summary\": "
},
{
"path": "rag_experiment_accelerator/doc_loader/tests/test_document_intelligence_loader.py",
"chars": 9507,
"preview": "import json\nfrom rag_experiment_accelerator.doc_loader.documentIntelligenceLoader import (\n DocumentIntelligenceLoade"
},
{
"path": "rag_experiment_accelerator/doc_loader/tests/test_docx_loader.py",
"chars": 790,
"preview": "from unittest.mock import Mock\n\nfrom rag_experiment_accelerator.doc_loader.docxLoader import load_docx_files\nfrom rag_ex"
},
{
"path": "rag_experiment_accelerator/doc_loader/textLoader.py",
"chars": 1315,
"preview": "from langchain_community.document_loaders import TextLoader\n\nfrom rag_experiment_accelerator.doc_loader.structuredLoader"
},
{
"path": "rag_experiment_accelerator/embedding/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/embedding/aoai_embedding_model.py",
"chars": 2230,
"preview": "from openai import AzureOpenAI\n\nfrom rag_experiment_accelerator.config.environment import Environment\nfrom rag_experimen"
},
{
"path": "rag_experiment_accelerator/embedding/embedding_model.py",
"chars": 1076,
"preview": "from abc import abstractmethod, ABC\n\n\nclass EmbeddingModel(ABC):\n \"\"\"\n Base class for embedding models.\n\n Args:"
},
{
"path": "rag_experiment_accelerator/embedding/factory.py",
"chars": 572,
"preview": "from rag_experiment_accelerator.embedding.aoai_embedding_model import AOAIEmbeddingModel\nfrom rag_experiment_accelerator"
},
{
"path": "rag_experiment_accelerator/embedding/st_embedding_model.py",
"chars": 2970,
"preview": "from sentence_transformers import SentenceTransformer\nfrom rag_experiment_accelerator.embedding.embedding_model import E"
},
{
"path": "rag_experiment_accelerator/embedding/tests/test_aoai_embedding_model.py",
"chars": 2531,
"preview": "from unittest.mock import patch, MagicMock\n\nfrom openai.types.create_embedding_response import CreateEmbeddingResponse, "
},
{
"path": "rag_experiment_accelerator/embedding/tests/test_factory.py",
"chars": 1567,
"preview": "from unittest.mock import patch, MagicMock\nimport pytest\n\nfrom rag_experiment_accelerator.embedding.aoai_embedding_model"
},
{
"path": "rag_experiment_accelerator/embedding/tests/test_st_embedding_model.py",
"chars": 1258,
"preview": "from unittest.mock import patch\nimport pytest\nimport numpy as np\nfrom rag_experiment_accelerator.embedding.st_embedding_"
},
{
"path": "rag_experiment_accelerator/evaluation/LICENSE.txt",
"chars": 11353,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "rag_experiment_accelerator/evaluation/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/evaluation/eval.py",
"chars": 13626,
"preview": "from concurrent.futures import ThreadPoolExecutor, as_completed\nfrom contextlib import ExitStack\nimport os\nimport warnin"
},
{
"path": "rag_experiment_accelerator/evaluation/llm_based_metrics.py",
"chars": 5880,
"preview": "from sentence_transformers import SentenceTransformer\nfrom sklearn.metrics.pairwise import cosine_similarity\n\nfrom rag_e"
},
{
"path": "rag_experiment_accelerator/evaluation/plain_metrics.py",
"chars": 7510,
"preview": "import evaluate\nfrom rapidfuzz import fuzz\nfrom rapidfuzz import distance\nfrom textdistance import algorithms\nfrom rouge"
},
{
"path": "rag_experiment_accelerator/evaluation/plot_metrics.py",
"chars": 5631,
"preview": "import ast\n\nimport plotly.express as px\nimport plotly.graph_objects as go\nimport plotly.subplots as sp\nfrom rag_experime"
},
{
"path": "rag_experiment_accelerator/evaluation/search_eval.py",
"chars": 1869,
"preview": "from sklearn import metrics\n\nfrom rag_experiment_accelerator.evaluation.spacy_evaluator import (\n SpacyEvaluator,\n)\nf"
},
{
"path": "rag_experiment_accelerator/evaluation/spacy_evaluator.py",
"chars": 1692,
"preview": "from spacy import load\n\nfrom rag_experiment_accelerator.utils.logging import get_logger\n\nlogger = get_logger(__name__)\n\n"
},
{
"path": "rag_experiment_accelerator/evaluation/tests/test_llm_based_metrics.py",
"chars": 3386,
"preview": "from unittest.mock import patch\n\nfrom rag_experiment_accelerator.evaluation.llm_based_metrics import (\n llm_answer_re"
},
{
"path": "rag_experiment_accelerator/evaluation/tests/test_plain_metrics.py",
"chars": 3037,
"preview": "from unittest.mock import patch\nfrom pytest import approx\n\nfrom rag_experiment_accelerator.evaluation.plain_metrics impo"
},
{
"path": "rag_experiment_accelerator/evaluation/tests/test_search_eval.py",
"chars": 2024,
"preview": "from unittest.mock import patch\n\nfrom rag_experiment_accelerator.evaluation.search_eval import (\n evaluate_search_res"
},
{
"path": "rag_experiment_accelerator/evaluation/tests/test_spacy_evaluator.py",
"chars": 1494,
"preview": "from unittest.mock import MagicMock, call, patch\nfrom rag_experiment_accelerator.evaluation.spacy_evaluator import (\n "
},
{
"path": "rag_experiment_accelerator/evaluation/tests/test_transformer_based_metrics.py",
"chars": 621,
"preview": "from unittest.mock import MagicMock\n\nimport numpy as np\n\n\nfrom rag_experiment_accelerator.evaluation.transformer_based_m"
},
{
"path": "rag_experiment_accelerator/evaluation/transformer_based_metrics.py",
"chars": 2353,
"preview": "from sentence_transformers import SentenceTransformer\nfrom sklearn.metrics.pairwise import cosine_similarity\n\n\n# todo: c"
},
{
"path": "rag_experiment_accelerator/ingest_data/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/ingest_data/acs_ingest.py",
"chars": 7665,
"preview": "from concurrent.futures import ThreadPoolExecutor, as_completed\nfrom contextlib import ExitStack\nimport hashlib\n\nimport "
},
{
"path": "rag_experiment_accelerator/ingest_data/tests/test_acs_ingest.py",
"chars": 5772,
"preview": "from unittest.mock import patch, Mock, ANY\n\nfrom rag_experiment_accelerator.ingest_data.acs_ingest import (\n my_hash,"
},
{
"path": "rag_experiment_accelerator/init_Index/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/init_Index/create_index.py",
"chars": 6649,
"preview": "from azure.core.credentials import AzureKeyCredential\nfrom azure.search.documents.indexes import SearchIndexClient\nfrom "
},
{
"path": "rag_experiment_accelerator/init_Index/tests/test_create_index.py",
"chars": 14507,
"preview": "import unittest\nfrom unittest.mock import patch, Mock\n\nfrom rag_experiment_accelerator.config.language_config import Lan"
},
{
"path": "rag_experiment_accelerator/io/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/io/exceptions.py",
"chars": 554,
"preview": "class WriteException(Exception):\n def __init__(self, path: str, e: Exception):\n super().__init__(\n "
},
{
"path": "rag_experiment_accelerator/io/loader.py",
"chars": 1033,
"preview": "from abc import ABC, abstractmethod\n\n\nclass Loader(ABC):\n \"\"\"\n Abstract base class for data loaders.\n \"\"\"\n\n "
},
{
"path": "rag_experiment_accelerator/io/local/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/io/local/base.py",
"chars": 453,
"preview": "import os\n\n\nclass LocalIOBase:\n \"\"\"\n Base class for local input/output operations.\n \"\"\"\n\n def exists(self, p"
},
{
"path": "rag_experiment_accelerator/io/local/loaders/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/io/local/loaders/jsonl_loader.py",
"chars": 1461,
"preview": "import json\nfrom json.decoder import JSONDecodeError\n\nfrom rag_experiment_accelerator.io.local.loaders.local_loader impo"
},
{
"path": "rag_experiment_accelerator/io/local/loaders/local_loader.py",
"chars": 1642,
"preview": "from abc import abstractmethod\nimport pathlib\n\nfrom rag_experiment_accelerator.io.loader import Loader\nfrom rag_experime"
},
{
"path": "rag_experiment_accelerator/io/local/loaders/tests/test_jsonl_loader.py",
"chars": 1078,
"preview": "import json\nimport os\nimport shutil\nimport tempfile\nimport pytest\n\nfrom rag_experiment_accelerator.io.local.loaders.json"
},
{
"path": "rag_experiment_accelerator/io/local/loaders/tests/test_local_loader.py",
"chars": 395,
"preview": "from rag_experiment_accelerator.io.local.loaders.local_loader import LocalLoader\n\n\ndef test__get_file_ext():\n class T"
},
{
"path": "rag_experiment_accelerator/io/local/tests/test_local_io_base.py",
"chars": 509,
"preview": "import os\nimport shutil\nimport tempfile\nimport pytest\n\nfrom rag_experiment_accelerator.io.local.base import LocalIOBase\n"
},
{
"path": "rag_experiment_accelerator/io/local/writers/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/io/local/writers/jsonl_writer.py",
"chars": 894,
"preview": "import json\n\nfrom rag_experiment_accelerator.io.local.writers.local_writer import LocalWriter\nfrom rag_experiment_accele"
},
{
"path": "rag_experiment_accelerator/io/local/writers/local_writer.py",
"chars": 3674,
"preview": "from abc import abstractmethod\nimport os\nimport pathlib\nimport shutil\nfrom rag_experiment_accelerator.io.exceptions impo"
},
{
"path": "rag_experiment_accelerator/io/local/writers/tests/test_jsonl_writer.py",
"chars": 624,
"preview": "import os\nimport shutil\nimport tempfile\n\nimport pytest\n\nfrom rag_experiment_accelerator.io.local.writers.jsonl_writer im"
},
{
"path": "rag_experiment_accelerator/io/local/writers/tests/test_local_writer.py",
"chars": 4292,
"preview": "import os\nimport shutil\nimport tempfile\nimport uuid\n\nimport pytest\n\nfrom rag_experiment_accelerator.io.exceptions import"
},
{
"path": "rag_experiment_accelerator/io/writer.py",
"chars": 1276,
"preview": "from abc import ABC, abstractmethod\n\n\nclass Writer(ABC):\n \"\"\"Abstract base class for a writer.\"\"\"\n\n @abstractmetho"
},
{
"path": "rag_experiment_accelerator/llm/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "rag_experiment_accelerator/llm/exceptions.py",
"chars": 52,
"preview": "class ContentFilteredException(Exception):\n pass\n"
},
{
"path": "rag_experiment_accelerator/llm/prompt/__init__.py",
"chars": 1464,
"preview": "# flake8: noqa\n\nfrom rag_experiment_accelerator.llm.prompt.prompt import (\n Prompt,\n StructuredPrompt,\n Structu"
},
{
"path": "rag_experiment_accelerator/llm/prompt/hyde_prompts.py",
"chars": 861,
"preview": "import json\nfrom rag_experiment_accelerator.llm.prompt.prompt import (\n Prompt,\n StructuredPrompt,\n PromptTag,\n"
},
{
"path": "rag_experiment_accelerator/llm/prompt/instruction_prompts.py",
"chars": 1592,
"preview": "import json\nfrom rag_experiment_accelerator.llm.prompt.prompt import (\n Prompt,\n StructuredPrompt,\n PromptTag,\n"
},
{
"path": "rag_experiment_accelerator/llm/prompt/multiprompts.py",
"chars": 854,
"preview": "import json\nfrom rag_experiment_accelerator.llm.prompt.prompt import StructuredPrompt, PromptTag\n\n\ndef validate_do_we_ne"
},
{
"path": "rag_experiment_accelerator/llm/prompt/prompt.py",
"chars": 6547,
"preview": "import os\nfrom importlib import resources\nimport re\n\nfrom string import Template\n\nfrom enum import StrEnum\nfrom rag_expe"
},
{
"path": "rag_experiment_accelerator/llm/prompt/qna_prompts.py",
"chars": 2123,
"preview": "import json\nfrom rag_experiment_accelerator.llm.prompt.prompt import (\n StructuredWithCoTPrompt,\n StructuredPrompt"
},
{
"path": "rag_experiment_accelerator/llm/prompt/ragas_prompts.py",
"chars": 1479,
"preview": "import re\nimport json\nfrom rag_experiment_accelerator.llm.prompt.prompt import (\n Prompt,\n StructuredPrompt,\n P"
},
{
"path": "rag_experiment_accelerator/llm/prompt/rerank_prompts.py",
"chars": 746,
"preview": "import re\nimport json\nfrom rag_experiment_accelerator.llm.prompt.prompt import StructuredPrompt, PromptTag\n\n\ndef validat"
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/do_need_multiple_prompt_instruction.txt",
"chars": 1627,
"preview": "Analyze the given question to determine if it falls into one of the following categories:\n\n1. Simple, Factual Question\n "
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/generate_qna_long_multi_context.txt",
"chars": 19461,
"preview": "Your task is to create a question and answer pair from provided pieces of documents. You will be given chunks of documen"
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/generate_qna_long_single_context.txt",
"chars": 18570,
"preview": "Your task is to create a question and answer pair from provided pieces of documents. You will be given chunks of documen"
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/generate_qna_short_multi_context.txt",
"chars": 5972,
"preview": "Your task is to create a question and answer pair from provided pieces of documents. You will be given chunks of documen"
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/generate_qna_short_single_context.txt",
"chars": 5715,
"preview": "Your task is to create a question and answer pair from provided pieces of documents. You will be given chunks of documen"
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/generate_qna_short_single_context_no_cot.txt",
"chars": 8401,
"preview": "Your task is to create a question and answer pair from provided pieces of documents. You will be given chunks of documen"
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/llm_answer_relevance_instruction.txt",
"chars": 369,
"preview": "Generate question for the given answer.\nExample:\nUser:\n The PSLV-C56 mission is scheduled to be launched on Sunday, 3"
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/llm_context_precision_instruction.txt",
"chars": 666,
"preview": "Given a question and a context, verify if the information in the given context is useful in answering the question. Retu"
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/llm_context_recall_instruction.txt",
"chars": 3439,
"preview": "Given a context, and an answer, analyze each sentence in the answer and classify if the sentence can be attributed to th"
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/main_instruction_long.txt",
"chars": 1671,
"preview": "You provide answers to questions based solely on the information provided below.\nAnswer precisely and concisely, address"
},
{
"path": "rag_experiment_accelerator/llm/prompts_text/main_instruction_short.txt",
"chars": 435,
"preview": "You provide answers to questions based solely on the information provided below.\nAnswer precisely and concisely, address"
}
]
// ... and 42 more files (download for full content)
About this extraction
This page contains the full source code of the microsoft/rag-experiment-accelerator GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 242 files (1.1 MB), approximately 238.6k tokens, and a symbol index with 541 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.