Files
wehub-resource-sync 76d991c447
Auto Update PR / update-prs (push) Has been cancelled
CI / format-check (push) Has been cancelled
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / live-api-tests (push) Has been cancelled
CI / plugin-integration-test (push) Has been cancelled
CI / ollama-integration-test (push) Has been cancelled
CI / test-fork-pr (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:37:14 +08:00

163 lines
4.3 KiB
TOML

# Copyright 2025 Google LLC.
#
# 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.
[build-system]
requires = ["setuptools>=67.0.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "langextract"
version = "1.6.0"
description = "LangExtract: A library for extracting structured data from language models"
readme = "README.md"
requires-python = ">=3.10"
license = "Apache-2.0"
authors = [
{name = "Akshay Goel", email = "goelak@google.com"}
]
dependencies = [
"absl-py>=1.0.0",
"aiohttp>=3.8.0",
"async_timeout>=4.0.0",
"exceptiongroup>=1.1.0",
"google-genai>=1.39.0",
"google-cloud-storage>=2.14.0",
"ml-collections>=0.1.0",
"more-itertools>=8.0.0",
"numpy>=1.20.0",
"pandas>=1.3.0",
"pydantic>=1.8.0",
"python-dotenv>=0.19.0",
"PyYAML>=6.0",
"regex>=2023.0.0",
"requests>=2.25.0",
"tqdm>=4.64.0",
"typing-extensions>=4.0.0"
]
[project.urls]
"Homepage" = "https://github.com/google/langextract"
"Repository" = "https://github.com/google/langextract"
"Documentation" = "https://github.com/google/langextract/blob/main/README.md"
"Bug Tracker" = "https://github.com/google/langextract/issues"
"Changelog" = "https://github.com/google/langextract/releases"
"DOI" = "https://doi.org/10.5281/zenodo.17015089"
[project.optional-dependencies]
openai = ["openai>=1.50.0"]
all = ["openai>=1.50.0"]
dev = [
"pyink==24.3.0",
"isort==5.13.2",
"pylint>=3.0.0",
"pytype>=2024.10.11",
"tox>=4.0.0",
"import-linter>=2.0",
"pre-commit>=3.5.0",
"types-regex>=2023.0.0"
]
test = [
"pytest>=7.4.0",
"tomli>=2.0.0"
]
notebook = [
"ipython>=7.0.0",
"notebook>=6.0.0"
]
[tool.setuptools]
packages = [
"langextract",
"langextract._compat",
"langextract.core",
"langextract.providers",
"langextract.providers.schemas"
]
include-package-data = true
[tool.setuptools.package-data]
langextract = ["py.typed"]
# Provider discovery mechanism for built-in and third-party providers
[project.entry-points."langextract.providers"]
gemini = "langextract.providers.gemini:GeminiLanguageModel"
ollama = "langextract.providers.ollama:OllamaLanguageModel"
openai = "langextract.providers.openai:OpenAILanguageModel"
[tool.setuptools.exclude-package-data]
"*" = [
"docs*",
"tests*",
"kokoro*",
"*.gif",
"*.svg",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py", "*_test.py"]
python_classes = "Test*"
python_functions = "test_*"
# Show extra test summary info
addopts = "-ra"
markers = [
"live_api: marks tests as requiring live API access",
"vertex_ai: marks live tests that require Vertex AI credentials",
"requires_pip: marks tests that perform pip install/uninstall operations",
"integration: marks integration tests that test multiple components together",
]
[tool.pyink]
# Configuration for Google's style guide
line-length = 80
unstable = true
pyink-indentation = 2
pyink-use-majority-quotes = true
[tool.isort]
# Configuration for Google's style guide
profile = "google"
line_length = 80
force_sort_within_sections = true
# Allow multiple imports on one line for these modules
single_line_exclusions = ["typing", "typing_extensions", "collections.abc"]
[tool.importlinter]
root_package = "langextract"
[[tool.importlinter.contracts]]
name = "Providers must not import inference"
type = "forbidden"
source_modules = ["langextract.providers"]
forbidden_modules = ["langextract.inference"]
[[tool.importlinter.contracts]]
name = "Core must not import providers"
type = "forbidden"
source_modules = ["langextract.core"]
forbidden_modules = ["langextract.providers"]
[[tool.importlinter.contracts]]
name = "Core must not import high-level modules"
type = "forbidden"
source_modules = ["langextract.core"]
forbidden_modules = [
"langextract.annotation",
"langextract.chunking",
"langextract.prompting",
"langextract.resolver",
]