ContextGem - Effortless LLM extraction from documents
======================================================

Copyright (c) 2025 Shcherbak AI AS
All rights reserved
Developed by Sergii Shcherbak

This software is 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.

==============================================================================
THIRD-PARTY COMPONENTS
==============================================================================

This software includes the following third-party components:

Core Dependencies:
- aiolimiter: Rate limiting for asynchronous operations
- colorlog: Colored logging formatter
- docstring-parser: Docstring parsing for auto-generating tool schemas
- fastjsonschema: Fast JSON schema validator
- genai-prices: LLM pricing data and utilities (by Pydantic) to automatically estimate costs
- Jinja2: Templating engine
- litellm: LLM interface library (this software uses only MIT-licensed portions of LiteLLM and does not utilize any components from the enterprise/ directory)
- lxml: High-performance XML processing library
- onnxruntime: ONNX model inference runtime (pinned for Python 3.10/3.14 wheel compatibility; used transitively via wtpsplit-lite)
- openai: OpenAI Python client (pinned for stable compatibility with litellm)
- pillow: Image processing library for local model image handling
- pydantic: Data validation
- python-ulid: ULID generation
- tenacity: Retry library for Python
- tethered: Runtime network egress control; used to constrain SaT model downloads (HuggingFace) and genai-prices refresh (raw.githubusercontent.com) to known hosts, and to enforce egress policy in tests
- typing-extensions: Type annotation extensions
- wtpsplit-lite: Lightweight version of wtpsplit that only retains accelerated ONNX inference of SaT models with minimal dependencies

Development Dependencies:
- bandit: Python security linter
- commitizen: Conventional commit tool and release management
- coverage: Test coverage measurement
- deptry: Python dependency checker for unused, missing and transitive dependencies
- fabric: SSH and command execution library used for development task automation
- interrogate: Python docstring coverage checker
- memory-profiler: Python memory usage monitoring tool
- nbformat: Notebook format utilities
- nest-asyncio: Patch for asyncio to allow nested event loops (used for VCR test compatibility)
- pre-commit: Pre-commit hooks
- pympler: Python memory analysis for object-level memory measurement
- ty: Static type checker for Python
- pytest: Testing framework
- pytest-cov: Coverage plugin for pytest
- pytest-recording: Recording HTTP interactions for tests
- python-dotenv: Environment variable management
- ruff: Fast Python linter and formatter
- sphinx: Documentation generator
- sphinx-autobuild: Live-reloading docs builder for Sphinx 
- sphinx-autodoc-typehints: Type annotation support for Sphinx
- sphinx-book-theme: Book-like theme for Sphinx
- sphinx-copybutton: Adds copy button to code blocks in Sphinx docs
- sphinx-design: Component library for Sphinx documentation
- sphinx-sitemap: Generates XML sitemaps for Sphinx documentation
- sphinxext-opengraph: OpenGraph metadata support for Sphinx documentation
- twine: PyPI package metadata validator (used by the package-check pre-commit hook)
- types-lxml: Type stubs for lxml

Each of these components may have their own licenses. Users should refer to the 
respective project repositories for detailed license information.

============================================================================== 