omniadapters 3.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. omniadapters-3.0.0/.coveragerc +14 -0
  2. omniadapters-3.0.0/.dockerignore +51 -0
  3. omniadapters-3.0.0/.env.sample +12 -0
  4. omniadapters-3.0.0/.gitattributes +1 -0
  5. omniadapters-3.0.0/.gitignore +80 -0
  6. omniadapters-3.0.0/.mypy.ini +68 -0
  7. omniadapters-3.0.0/.pre-commit-config.yaml +69 -0
  8. omniadapters-3.0.0/.prettierignore +78 -0
  9. omniadapters-3.0.0/.prettierrc +5 -0
  10. omniadapters-3.0.0/.pytest.ini +19 -0
  11. omniadapters-3.0.0/.python-version +1 -0
  12. omniadapters-3.0.0/.ruff.toml +96 -0
  13. omniadapters-3.0.0/.secrets.sample +1 -0
  14. omniadapters-3.0.0/Makefile +86 -0
  15. omniadapters-3.0.0/PKG-INFO +50 -0
  16. omniadapters-3.0.0/README.md +10 -0
  17. omniadapters-3.0.0/omniadapters/__init__.py +0 -0
  18. omniadapters-3.0.0/omniadapters/structify/__init__.py +24 -0
  19. omniadapters-3.0.0/omniadapters/structify/adapters/__init__.py +11 -0
  20. omniadapters-3.0.0/omniadapters/structify/adapters/anthropic.py +17 -0
  21. omniadapters-3.0.0/omniadapters/structify/adapters/azure_openai.py +17 -0
  22. omniadapters-3.0.0/omniadapters/structify/adapters/base.py +172 -0
  23. omniadapters-3.0.0/omniadapters/structify/adapters/gemini.py +93 -0
  24. omniadapters-3.0.0/omniadapters/structify/adapters/openai.py +17 -0
  25. omniadapters-3.0.0/omniadapters/structify/enums.py +14 -0
  26. omniadapters-3.0.0/omniadapters/structify/factory.py +105 -0
  27. omniadapters-3.0.0/omniadapters/structify/hooks.py +164 -0
  28. omniadapters-3.0.0/omniadapters/structify/models.py +97 -0
  29. omniadapters-3.0.0/omniadapters/structify/types.py +44 -0
  30. omniadapters-3.0.0/pyproject.toml +170 -0
  31. omniadapters-3.0.0/pyrightconfig.json +56 -0
  32. omniadapters-3.0.0/uv.lock +2814 -0
@@ -0,0 +1,14 @@
1
+ [run]
2
+ source =
3
+ omniadapters/
4
+
5
+ omit =
6
+ */__init__.py
7
+ */tests/*
8
+
9
+ [report]
10
+ fail_under = 80
11
+ show_missing = True
12
+
13
+ [html]
14
+ directory = coverage_html_report
@@ -0,0 +1,51 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ .venv/
8
+ venv/
9
+ ENV/
10
+ env/
11
+ .pytest_cache/
12
+ .coverage
13
+ .coverage.*
14
+ htmlcov/
15
+ .tox/
16
+ .mypy_cache/
17
+ .dmypy.json
18
+ dmypy.json
19
+ .pyre/
20
+ .ruff_cache/
21
+
22
+ # Git
23
+ .git/
24
+ .github/
25
+ .gitignore
26
+ .gitattributes
27
+
28
+ # IDE
29
+ .vscode/
30
+ .idea/
31
+ *.swp
32
+ *.swo
33
+ *~
34
+ .DS_Store
35
+
36
+ # Documentation
37
+ docs/
38
+ *.md
39
+ !README.md
40
+
41
+ # Testing
42
+ tests/
43
+ test_*.py
44
+ *_test.py
45
+ conftest.py
46
+
47
+ # Build artifacts
48
+ build/
49
+ dist/
50
+ *.egg-info/
51
+ .eggs/
@@ -0,0 +1,12 @@
1
+ ENV=development
2
+ DEBUG=true
3
+
4
+ S3__ENDPOINT_URL=http://host.docker.internal:9000
5
+ S3__AWS_ACCESS_KEY_ID=minioadmin
6
+ S3__AWS_SECRET_ACCESS_KEY=minioadmin
7
+
8
+ OPENAI__API_KEY=
9
+ OPENAI__MODEL_NAME=gpt-4o-mini
10
+ OPENAI__TEMPERATURE=0.0
11
+ OPENAI__MAX_COMPLETION_TOKENS=1000
12
+ OPENAI__LOGPROBS=false
@@ -0,0 +1 @@
1
+ *.ipynb linguist-documentation
@@ -0,0 +1,80 @@
1
+ _build/
2
+ .DS_Store
3
+ .secrets
4
+ __pycache__/
5
+ *.py[cod]
6
+ *$py.class
7
+ *.so
8
+ .Python
9
+ build/
10
+ develop-eggs/
11
+ dist/
12
+ downloads/
13
+ eggs/
14
+ .eggs/
15
+ lib/
16
+ lib64/
17
+ parts/
18
+ sdist/
19
+ var/
20
+ wheels/
21
+ share/python-wheels/
22
+ *.egg-info/
23
+ .installed.cfg
24
+ *.egg
25
+ MANIFEST
26
+ *.manifest
27
+ *.spec
28
+ pip-log.txt
29
+ pip-delete-this-directory.txt
30
+ htmlcov/
31
+ .tox/
32
+ .nox/
33
+ .coverage
34
+ .coverage.*
35
+ .cache
36
+ nosetests.xml
37
+ coverage.xml
38
+ *.cover
39
+ *.py,cover
40
+ .hypothesis/
41
+ .pytest_cache/
42
+ cover/
43
+ *.mo
44
+ *.pot
45
+ *.log
46
+ instance/
47
+ .webassets-cache
48
+ .scrapy
49
+ docs/_build/
50
+ .pybuilder/
51
+ target/
52
+ .ipynb_checkpoints
53
+ profile_default/
54
+ ipython_config.py
55
+ .pdm.toml
56
+ __pypackages__/
57
+ celerybeat-schedule
58
+ celerybeat.pid
59
+ *.sage.py
60
+ .venv
61
+ env/
62
+ venv/
63
+ ENV/
64
+ env.bak/
65
+ venv.bak/
66
+ .spyderproject
67
+ .spyproject
68
+ .ropeproject
69
+ /site
70
+ .mypy_cache/
71
+ .dmypy.json
72
+ dmypy.json
73
+ .pyre/
74
+ .pytype/
75
+ cython_debug/
76
+ .vscode/
77
+ .env
78
+ **/genai/**/*
79
+ **/llm/**/*
80
+ outputs/
@@ -0,0 +1,68 @@
1
+ # Reference:
2
+ # https://github.com/openai/openai-python/blob/main/mypy.ini
3
+ # https://github.com/pytorch/pytorch/blob/main/mypy.ini
4
+ [mypy]
5
+ pretty=True
6
+ show_error_codes=True
7
+ python_version=3.12
8
+
9
+ strict_equality=True
10
+ implicit_reexport=True
11
+ check_untyped_defs=True
12
+ no_implicit_optional=True
13
+
14
+ warn_return_any=True
15
+ warn_unreachable=True
16
+ warn_unused_configs=True
17
+
18
+ warn_unused_ignores=False
19
+ warn_redundant_casts=False
20
+
21
+ disallow_any_generics=True
22
+ disallow_untyped_defs=True
23
+ disallow_untyped_calls=False
24
+ disallow_subclassing_any=True
25
+ disallow_incomplete_defs=True
26
+ disallow_untyped_decorators=True
27
+ cache_fine_grained=True
28
+ disable_error_code=func-returns-value
29
+
30
+ plugins = pydantic.mypy
31
+
32
+ [pydantic-mypy]
33
+ init_forbid_extra = True
34
+ init_typed = True
35
+ warn_required_dynamic_aliases = True
36
+
37
+ # https://github.com/python/mypy/issues/12162
38
+ [mypy.overrides]
39
+ module="black.files.*"
40
+ ignore_errors=true
41
+ ignore_missing_imports=true
42
+
43
+ [mypy-matplotlib.*]
44
+ ignore_missing_imports=True
45
+
46
+ [mypy-mpl_toolkits.*]
47
+ ignore_missing_imports=True
48
+
49
+ [mypy-seaborn.*]
50
+ ignore_missing_imports=True
51
+
52
+ [mypy-sklearn.*]
53
+ ignore_missing_imports=True
54
+
55
+ [mypy-transformers.*]
56
+ ignore_missing_imports=True
57
+
58
+ [mypy-datasets.*]
59
+ ignore_missing_imports=True
60
+
61
+ [mypy-accelerate.*]
62
+ ignore_missing_imports=True
63
+
64
+ [mypy-scipy.*]
65
+ ignore_missing_imports=True
66
+
67
+ [mypy-bitsandbytes.*]
68
+ ignore_missing_imports=True
@@ -0,0 +1,69 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: check-ast
6
+ - id: check-builtin-literals
7
+ - id: check-case-conflict
8
+ - id: check-docstring-first
9
+ - id: check-executables-have-shebangs
10
+ - id: check-json
11
+ - id: check-shebang-scripts-are-executable
12
+ - id: check-symlinks
13
+ - id: check-toml
14
+ - id: check-vcs-permalinks
15
+ - id: check-xml
16
+ - id: check-yaml
17
+ - id: debug-statements
18
+ - id: destroyed-symlinks
19
+ - id: mixed-line-ending
20
+ - id: trailing-whitespace
21
+ - id: check-merge-conflict
22
+
23
+
24
+ - repo: local
25
+ hooks:
26
+ - id: security-bandit
27
+ name: Security Check (Bandit)
28
+ entry: make security
29
+ language: system
30
+ types: [python]
31
+ pass_filenames: false
32
+
33
+ - repo: local
34
+ hooks:
35
+ - id: lint-ruff
36
+ name: Lint and Format Check (Ruff)
37
+ entry: make lint
38
+ language: system
39
+ types: [python]
40
+ pass_filenames: false
41
+
42
+ - repo: local
43
+ hooks:
44
+ - id: type-mypy
45
+ name: Type Check (MyPy)
46
+ entry: make typecheck
47
+ language: system
48
+ types: [python]
49
+ pass_filenames: false
50
+
51
+ - repo: local
52
+ hooks:
53
+ - id: unit-test
54
+ name: Unit Tests (PyTest)
55
+ entry: make test
56
+ language: system
57
+ types: [python]
58
+ pass_filenames: false
59
+
60
+ - repo: https://github.com/commitizen-tools/commitizen
61
+ rev: v4.8.3
62
+ hooks:
63
+ - id: commitizen
64
+ stages: [commit-msg]
65
+
66
+ - repo: https://github.com/astral-sh/uv-pre-commit
67
+ rev: 0.7.19
68
+ hooks:
69
+ - id: uv-lock
@@ -0,0 +1,78 @@
1
+ # Build artifacts
2
+ build/
3
+ dist/
4
+ *.egg-info/
5
+ __pycache__/
6
+ *.pyc
7
+ *.pyo
8
+ .DS_Store
9
+
10
+ # Coverage reports
11
+ htmlcov/
12
+ .coverage
13
+ coverage.xml
14
+ *.cover
15
+
16
+ # Virtual environments
17
+ venv/
18
+ .venv/
19
+ env/
20
+ .env/
21
+
22
+ # Cache directories
23
+ .pytest_cache/
24
+ .mypy_cache/
25
+ .ruff_cache/
26
+ .nox/
27
+ .tox/
28
+
29
+ # Node modules
30
+ node_modules/
31
+
32
+ # IDE
33
+ .vscode/
34
+ .idea/
35
+ *.swp
36
+ *.swo
37
+
38
+ # Documentation build
39
+ docs/_build/
40
+ docs/_static/
41
+ docs/_templates/
42
+
43
+ # Jupyter
44
+ .ipynb_checkpoints/
45
+ *.ipynb
46
+
47
+ # Lock files (we want to format these)
48
+ !package-lock.json
49
+ !yarn.lock
50
+ !pnpm-lock.yaml
51
+
52
+ # Test artifacts
53
+ .benchmarks/
54
+
55
+ # Temporary files
56
+ *.tmp
57
+ *.temp
58
+ *.log
59
+
60
+ # Python files (handled by ruff)
61
+ *.py
62
+
63
+ # Generated files
64
+ *.min.js
65
+ *.min.css
66
+
67
+ # Archives
68
+ *.zip
69
+ *.tar.gz
70
+ *.tgz
71
+
72
+ # OS files
73
+ Thumbs.db
74
+
75
+ # Git
76
+ .git/
77
+ .gitignore
78
+ .gitattributes
@@ -0,0 +1,5 @@
1
+ {
2
+ "proseWrap": "always",
3
+ "printWidth": 80,
4
+ "tabWidth": 4
5
+ }
@@ -0,0 +1,19 @@
1
+ # Reference:
2
+ # https://github.com/tiangolo/fastapi/blob/master/pyproject.toml
3
+ # https://github.com/pydantic/pydantic/blob/main/pyproject.toml
4
+ [pytest]
5
+ minversion=6.0
6
+ pythonpath=.
7
+ addopts=
8
+ --strict-config
9
+ --strict-markers
10
+ --import-mode=importlib
11
+ testpaths=
12
+ tests/omniadapters/unit
13
+ tests/omniadapters/integration
14
+ xfail_strict=true
15
+ filterwarnings=
16
+ error
17
+ ignore::DeprecationWarning
18
+ markers =
19
+ asyncio: mark test as an async test
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,96 @@
1
+ exclude = [
2
+ ".bzr",
3
+ ".direnv",
4
+ ".eggs",
5
+ ".git",
6
+ ".git-rewrite",
7
+ ".hg",
8
+ ".mypy_cache",
9
+ ".nox",
10
+ ".pants.d",
11
+ ".pytype",
12
+ ".ruff_cache",
13
+ ".svn",
14
+ ".tox",
15
+ ".venv",
16
+ "__pypackages__",
17
+ "_build",
18
+ "buck-out",
19
+ "build",
20
+ "dist",
21
+ "node_modules",
22
+ "venv",
23
+ ]
24
+
25
+ line-length = 120
26
+ indent-width = 4
27
+ target-version = "py312"
28
+ output-format = "grouped"
29
+
30
+ [lint]
31
+ exclude = ["*.ipynb"]
32
+ select = [
33
+ "ARG",
34
+ "B",
35
+ "C4",
36
+ "G",
37
+ "E",
38
+ "EXE",
39
+ "F",
40
+ "I",
41
+ "SIM1",
42
+ "W",
43
+ "NPY",
44
+ "PERF",
45
+ "PGH004",
46
+ "PIE794",
47
+ "PIE800",
48
+ "PIE804",
49
+ "PIE807",
50
+ "PIE810",
51
+ "PLC0131",
52
+ "PLC0132",
53
+ "PLC0205",
54
+ "PLE",
55
+ "PLR0133",
56
+ "PLR0206",
57
+ "PLR1722",
58
+ "PLW0129",
59
+ "PLW0406",
60
+ "PLW0711",
61
+ "PLW1509",
62
+ "PLW3301",
63
+ "PT006",
64
+ "PT022",
65
+ "PT023",
66
+ "PT024",
67
+ "PT025",
68
+ "PT026",
69
+ "PYI",
70
+ "B904",
71
+ "TRY203",
72
+ "UP",
73
+ ]
74
+ ignore = [
75
+ "E501",
76
+ "UP006",
77
+ "UP015",
78
+ "UP035",
79
+ "G004",
80
+ "UP007",
81
+ "UP040",
82
+ "UP046",
83
+ "UP047",
84
+ ]
85
+ fixable = ["ALL"]
86
+ unfixable = []
87
+ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
88
+
89
+ [lint.isort]
90
+ known-first-party = ["omniadapters"]
91
+
92
+ [format]
93
+ quote-style = "double"
94
+ indent-style = "space"
95
+ skip-magic-trailing-comma = false
96
+ line-ending = "auto"
@@ -0,0 +1 @@
1
+ POSTGRES__PASSWORD=
@@ -0,0 +1,86 @@
1
+ .DEFAULT_GOAL := help
2
+
3
+ PACKAGE_NAME := omniadapters
4
+ DOCS_DIR := playbook
5
+ TEST_DIR := tests
6
+ SOURCES := $(PACKAGE_NAME)
7
+
8
+ .PHONY: .uv
9
+ .uv:
10
+ @uv -V || echo 'Please install uv: https://docs.astral.sh/uv/getting-started/installation/'
11
+
12
+ .PHONY: install
13
+ install: .uv
14
+ uv sync --frozen --all-extras --all-packages --all-groups
15
+ uv run pre-commit install
16
+ uv run pre-commit install --hook-type commit-msg
17
+
18
+ .PHONY: lock
19
+ lock: .uv
20
+ uv lock --upgrade
21
+
22
+ .PHONY: sync
23
+ sync: .uv
24
+ uv sync --all-extras --all-packages --all-groups
25
+
26
+ .PHONY: format
27
+ format: .uv
28
+ uv run ruff check --fix --exit-zero $(SOURCES)
29
+ uv run ruff format $(SOURCES)
30
+
31
+ .PHONY: lint
32
+ lint: .uv
33
+ uv run ruff check $(SOURCES)
34
+ uv run ruff format --check $(SOURCES)
35
+
36
+ .PHONY: security
37
+ security: .uv
38
+ uv run bandit -r $(PACKAGE_NAME) -ll
39
+
40
+ .PHONY: typecheck
41
+ typecheck: .uv
42
+ uv run mypy $(SOURCES)
43
+ uv run pyright $(SOURCES)
44
+ # @echo "Running ty (experimental)..."
45
+ # uv run ty check $(SOURCES) || echo "ty check failed (expected for pre-release)"
46
+
47
+ .PHONY: test
48
+ test: .uv
49
+ uv run pytest $(TEST_DIR)
50
+
51
+ .PHONY: coverage
52
+ coverage: .uv
53
+ uv run coverage run -m pytest $(TEST_DIR)
54
+ uv run coverage html -d htmlcov
55
+ uv run coverage xml -o coverage.xml
56
+ uv run coverage report -m --fail-under=95
57
+
58
+ .PHONY: docs
59
+ docs: .uv
60
+ cd $(DOCS_DIR) && uv run jupyter book build .
61
+
62
+ .PHONY: ci
63
+ ci: lint security typecheck test
64
+
65
+ .PHONY: clean
66
+ clean:
67
+ @./scripts/clean.sh
68
+
69
+ .PHONY: help
70
+ help:
71
+ @echo "Development Commands:"
72
+ @echo " install Install all dependencies (all groups + extras)"
73
+ @echo " lock Update and regenerate lock file"
74
+ @echo " sync Sync dependencies (without --frozen)"
75
+ @echo " format Format code with ruff"
76
+ @echo " lint Lint code with ruff (includes format check)"
77
+ @echo " security Run security checks with bandit"
78
+ @echo " typecheck Run type checking with mypy, pyright"
79
+ @echo " test Run tests with pytest"
80
+ @echo " coverage Run tests with coverage reporting (95% minimum)"
81
+ @echo " docs Build Jupyter Book documentation"
82
+ @echo " ci Run full CI pipeline (lint, security, typecheck, test, coverage)"
83
+ @echo ""
84
+ @echo "Utility Commands:"
85
+ @echo " clean Clean build artifacts and cache files"
86
+ @echo " help Show this help message"
@@ -0,0 +1,50 @@
1
+ Metadata-Version: 2.4
2
+ Name: omniadapters
3
+ Version: 3.0.0
4
+ Summary: A collection of code for omniadapters - unified interfaces for LLM providers.
5
+ Project-URL: Homepage, https://github.com/gao-hongnan/omniadapters
6
+ Project-URL: Documentation, https://github.com/gao-hongnan/omniadapters/tree/main/playbook
7
+ Project-URL: Repository, https://github.com/gao-hongnan/omniadapters
8
+ Project-URL: Issues, https://github.com/gao-hongnan/omniadapters/issues
9
+ Project-URL: Changelog, https://github.com/gao-hongnan/omniadapters/releases
10
+ Author-email: GAO Hongnan <hongnangao@gmail.com>
11
+ Maintainer-email: GAO Hongnan <hongnangao@gmail.com>
12
+ License: Apache-2.0
13
+ Keywords: adapters,ai,anthropic,gemini,google,instructor,llm,openai,pydantic,structured-output
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: Apache Software License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Classifier: Typing :: Typed
24
+ Requires-Python: >=3.12
25
+ Requires-Dist: anthropic>=0.59.0
26
+ Requires-Dist: google-genai>=1.27.0
27
+ Requires-Dist: instructor>=1.10.0
28
+ Requires-Dist: openai>=1.97.1
29
+ Requires-Dist: pydantic-settings>=2.10.1
30
+ Requires-Dist: pydantic>=2.11.7
31
+ Provides-Extra: all
32
+ Requires-Dist: python-dotenv>=1.0.1; extra == 'all'
33
+ Requires-Dist: rich>=13.12.0; extra == 'all'
34
+ Requires-Dist: typer>=0.15.1; extra == 'all'
35
+ Provides-Extra: playground
36
+ Requires-Dist: python-dotenv>=1.0.1; extra == 'playground'
37
+ Requires-Dist: rich>=13.12.0; extra == 'playground'
38
+ Requires-Dist: typer>=0.15.1; extra == 'playground'
39
+ Description-Content-Type: text/markdown
40
+
41
+ # OmniAdapters
42
+
43
+ [![CI](https://github.com/gao-hongnan/omniadapters/actions/workflows/ci.yml/badge.svg)](https://github.com/gao-hongnan/omniadapters/actions/workflows/ci.yml)
44
+ [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13-blue.svg)](https://www.python.org/downloads/)
45
+ [![PyPI](https://img.shields.io/badge/pypi-v22.0.0-blue.svg)](https://github.com/gao-hongnan/omniadapters)
46
+ [![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0)
47
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
48
+ [![Mypy](https://img.shields.io/badge/typed-mypy-blue?style=flat-square&logo=python)](http://mypy-lang.org/)
49
+ [![Pyright](https://img.shields.io/badge/typed-pyright-blue?style=flat-square&logo=python)](https://github.com/microsoft/pyright)
50
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
@@ -0,0 +1,10 @@
1
+ # OmniAdapters
2
+
3
+ [![CI](https://github.com/gao-hongnan/omniadapters/actions/workflows/ci.yml/badge.svg)](https://github.com/gao-hongnan/omniadapters/actions/workflows/ci.yml)
4
+ [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13-blue.svg)](https://www.python.org/downloads/)
5
+ [![PyPI](https://img.shields.io/badge/pypi-v22.0.0-blue.svg)](https://github.com/gao-hongnan/omniadapters)
6
+ [![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0)
7
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
8
+ [![Mypy](https://img.shields.io/badge/typed-mypy-blue?style=flat-square&logo=python)](http://mypy-lang.org/)
9
+ [![Pyright](https://img.shields.io/badge/typed-pyright-blue?style=flat-square&logo=python)](https://github.com/microsoft/pyright)
10
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
File without changes
@@ -0,0 +1,24 @@
1
+ from openai.types.chat import ChatCompletionMessageParam
2
+
3
+ from omniadapters.structify.factory import create_adapter
4
+ from omniadapters.structify.hooks import CompletionTrace
5
+ from omniadapters.structify.models import (
6
+ AnthropicProviderConfig,
7
+ AzureOpenAIProviderConfig,
8
+ CompletionResult,
9
+ GeminiProviderConfig,
10
+ OpenAIProviderConfig,
11
+ ProviderConfig,
12
+ )
13
+
14
+ __all__ = [
15
+ "create_adapter",
16
+ "ChatCompletionMessageParam",
17
+ "CompletionResult",
18
+ "CompletionTrace",
19
+ "ProviderConfig",
20
+ "OpenAIProviderConfig",
21
+ "AnthropicProviderConfig",
22
+ "GeminiProviderConfig",
23
+ "AzureOpenAIProviderConfig",
24
+ ]
@@ -0,0 +1,11 @@
1
+ from omniadapters.structify.adapters.anthropic import AnthropicAdapter
2
+ from omniadapters.structify.adapters.base import BaseAdapter
3
+ from omniadapters.structify.adapters.gemini import GeminiAdapter
4
+ from omniadapters.structify.adapters.openai import OpenAIAdapter
5
+
6
+ __all__ = [
7
+ "BaseAdapter",
8
+ "OpenAIAdapter",
9
+ "AnthropicAdapter",
10
+ "GeminiAdapter",
11
+ ]