coco-framework 0.1.0__py3-none-any.whl
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.
- coco/__init__.py +3 -0
- coco/agents/__init__.py +9 -0
- coco/agents/_subagent_transformer.py +307 -0
- coco/agents/factory.py +2164 -0
- coco/agents/middleware/__init__.py +100 -0
- coco/agents/middleware/_execution.py +385 -0
- coco/agents/middleware/_redaction.py +454 -0
- coco/agents/middleware/_retry.py +134 -0
- coco/agents/middleware/_trace_policy.py +61 -0
- coco/agents/middleware/context_editing.py +306 -0
- coco/agents/middleware/file_search.py +433 -0
- coco/agents/middleware/human_in_the_loop.py +680 -0
- coco/agents/middleware/internal_call_transformer.py +108 -0
- coco/agents/middleware/model_call_limit.py +267 -0
- coco/agents/middleware/model_fallback.py +417 -0
- coco/agents/middleware/model_retry.py +327 -0
- coco/agents/middleware/pii.py +878 -0
- coco/agents/middleware/provider_tool_search.py +307 -0
- coco/agents/middleware/shell_tool.py +949 -0
- coco/agents/middleware/summarization.py +910 -0
- coco/agents/middleware/todo.py +357 -0
- coco/agents/middleware/tool_call_limit.py +495 -0
- coco/agents/middleware/tool_emulator.py +251 -0
- coco/agents/middleware/tool_error.py +209 -0
- coco/agents/middleware/tool_retry.py +421 -0
- coco/agents/middleware/tool_selection.py +515 -0
- coco/agents/middleware/types.py +2201 -0
- coco/agents/structured_output.py +472 -0
- coco/chat_models/__init__.py +7 -0
- coco/chat_models/base.py +1082 -0
- coco/embeddings/__init__.py +18 -0
- coco/embeddings/base.py +279 -0
- coco/mcp/__init__.py +36 -0
- coco/mcp/adapter.py +245 -0
- coco/mcp/elicitation.py +394 -0
- coco/mcp/tools.py +307 -0
- coco/messages/__init__.py +73 -0
- coco/py.typed +0 -0
- coco/rate_limiters/__init__.py +13 -0
- coco/tools/__init__.py +22 -0
- coco/tools/tool_node.py +20 -0
- coco_anthropic/__init__.py +15 -0
- coco_anthropic/_client_utils.py +81 -0
- coco_anthropic/_compat.py +228 -0
- coco_anthropic/_sdk_compat.py +124 -0
- coco_anthropic/_version.py +3 -0
- coco_anthropic/chat_models.py +3349 -0
- coco_anthropic/data/__init__.py +1 -0
- coco_anthropic/data/_profiles.py +491 -0
- coco_anthropic/data/profile_augmentations.toml +69 -0
- coco_anthropic/experimental.py +140 -0
- coco_anthropic/llms.py +428 -0
- coco_anthropic/middleware/__init__.py +25 -0
- coco_anthropic/middleware/anthropic_tools.py +1197 -0
- coco_anthropic/middleware/bash.py +84 -0
- coco_anthropic/middleware/file_search.py +360 -0
- coco_anthropic/middleware/prompt_caching.py +276 -0
- coco_anthropic/output_parsers.py +93 -0
- coco_anthropic/py.typed +0 -0
- coco_core/__init__.py +20 -0
- coco_core/_api/__init__.py +87 -0
- coco_core/_api/beta_decorator.py +266 -0
- coco_core/_api/deprecation.py +637 -0
- coco_core/_api/internal.py +23 -0
- coco_core/_api/path.py +50 -0
- coco_core/_import_utils.py +41 -0
- coco_core/_protocol.py +625 -0
- coco_core/_security/__init__.py +36 -0
- coco_core/_security/_exceptions.py +9 -0
- coco_core/_security/_policy.py +313 -0
- coco_core/_security/_ssrf_protection.py +155 -0
- coco_core/_security/_transport.py +254 -0
- coco_core/agents.py +258 -0
- coco_core/caches.py +272 -0
- coco_core/callbacks/__init__.py +132 -0
- coco_core/callbacks/base.py +1229 -0
- coco_core/callbacks/file.py +266 -0
- coco_core/callbacks/manager.py +2826 -0
- coco_core/callbacks/stdout.py +123 -0
- coco_core/callbacks/streaming_stdout.py +154 -0
- coco_core/callbacks/usage.py +124 -0
- coco_core/chat_history.py +267 -0
- coco_core/chat_loaders.py +26 -0
- coco_core/chat_sessions.py +19 -0
- coco_core/cross_encoders.py +18 -0
- coco_core/document_loaders/__init__.py +36 -0
- coco_core/document_loaders/base.py +155 -0
- coco_core/document_loaders/blob_loaders.py +38 -0
- coco_core/documents/__init__.py +55 -0
- coco_core/documents/base.py +347 -0
- coco_core/documents/compressor.py +74 -0
- coco_core/documents/transformers.py +79 -0
- coco_core/embeddings/__init__.py +31 -0
- coco_core/embeddings/embeddings.py +78 -0
- coco_core/embeddings/fake.py +129 -0
- coco_core/env.py +22 -0
- coco_core/example_selectors/__init__.py +47 -0
- coco_core/example_selectors/base.py +60 -0
- coco_core/example_selectors/length_based.py +131 -0
- coco_core/example_selectors/semantic_similarity.py +366 -0
- coco_core/exceptions.py +166 -0
- coco_core/globals.py +72 -0
- coco_core/indexing/__init__.py +53 -0
- coco_core/indexing/api.py +954 -0
- coco_core/indexing/base.py +661 -0
- coco_core/indexing/in_memory.py +104 -0
- coco_core/language_models/__init__.py +116 -0
- coco_core/language_models/_compat_bridge.py +844 -0
- coco_core/language_models/_utils.py +343 -0
- coco_core/language_models/base.py +500 -0
- coco_core/language_models/chat_model_stream.py +1525 -0
- coco_core/language_models/chat_models.py +2748 -0
- coco_core/language_models/fake.py +137 -0
- coco_core/language_models/fake_chat_models.py +396 -0
- coco_core/language_models/llms.py +1569 -0
- coco_core/language_models/model_profile.py +183 -0
- coco_core/load/__init__.py +44 -0
- coco_core/load/_validation.py +191 -0
- coco_core/load/dump.py +120 -0
- coco_core/load/load.py +828 -0
- coco_core/load/mapping.py +1097 -0
- coco_core/load/serializable.py +406 -0
- coco_core/messages/__init__.py +198 -0
- coco_core/messages/ai.py +854 -0
- coco_core/messages/base.py +518 -0
- coco_core/messages/block_translators/__init__.py +112 -0
- coco_core/messages/block_translators/anthropic.py +534 -0
- coco_core/messages/block_translators/bedrock.py +108 -0
- coco_core/messages/block_translators/bedrock_converse.py +329 -0
- coco_core/messages/block_translators/coco_v0.py +303 -0
- coco_core/messages/block_translators/google_genai.py +610 -0
- coco_core/messages/block_translators/google_vertexai.py +21 -0
- coco_core/messages/block_translators/groq.py +157 -0
- coco_core/messages/block_translators/openai.py +1089 -0
- coco_core/messages/chat.py +64 -0
- coco_core/messages/content.py +1488 -0
- coco_core/messages/function.py +62 -0
- coco_core/messages/human.py +70 -0
- coco_core/messages/modifier.py +33 -0
- coco_core/messages/system.py +70 -0
- coco_core/messages/tool.py +418 -0
- coco_core/messages/utils.py +2442 -0
- coco_core/output_parsers/__init__.py +101 -0
- coco_core/output_parsers/base.py +361 -0
- coco_core/output_parsers/format_instructions.py +16 -0
- coco_core/output_parsers/json.py +139 -0
- coco_core/output_parsers/list.py +249 -0
- coco_core/output_parsers/openai_functions.py +324 -0
- coco_core/output_parsers/openai_tools.py +383 -0
- coco_core/output_parsers/pydantic.py +141 -0
- coco_core/output_parsers/string.py +63 -0
- coco_core/output_parsers/transform.py +175 -0
- coco_core/output_parsers/xml.py +301 -0
- coco_core/outputs/__init__.py +66 -0
- coco_core/outputs/chat_generation.py +147 -0
- coco_core/outputs/chat_result.py +39 -0
- coco_core/outputs/generation.py +80 -0
- coco_core/outputs/llm_result.py +112 -0
- coco_core/outputs/run_info.py +22 -0
- coco_core/prompt_values.py +161 -0
- coco_core/prompts/__init__.py +101 -0
- coco_core/prompts/base.py +508 -0
- coco_core/prompts/chat.py +1495 -0
- coco_core/prompts/dict.py +177 -0
- coco_core/prompts/few_shot.py +483 -0
- coco_core/prompts/few_shot_with_templates.py +239 -0
- coco_core/prompts/image.py +177 -0
- coco_core/prompts/loading.py +296 -0
- coco_core/prompts/message.py +97 -0
- coco_core/prompts/prompt.py +312 -0
- coco_core/prompts/string.py +399 -0
- coco_core/prompts/structured.py +214 -0
- coco_core/py.typed +0 -0
- coco_core/rate_limiters.py +254 -0
- coco_core/retrievers.py +328 -0
- coco_core/runnables/__init__.py +136 -0
- coco_core/runnables/base.py +6725 -0
- coco_core/runnables/branch.py +457 -0
- coco_core/runnables/config.py +712 -0
- coco_core/runnables/configurable.py +710 -0
- coco_core/runnables/fallbacks.py +663 -0
- coco_core/runnables/graph.py +741 -0
- coco_core/runnables/graph_ascii.py +366 -0
- coco_core/runnables/graph_mermaid.py +503 -0
- coco_core/runnables/graph_png.py +215 -0
- coco_core/runnables/history.py +631 -0
- coco_core/runnables/passthrough.py +849 -0
- coco_core/runnables/retry.py +379 -0
- coco_core/runnables/router.py +239 -0
- coco_core/runnables/schema.py +188 -0
- coco_core/runnables/utils.py +798 -0
- coco_core/stores.py +291 -0
- coco_core/structured_query.py +203 -0
- coco_core/sys_info.py +154 -0
- coco_core/tools/__init__.py +95 -0
- coco_core/tools/base.py +1948 -0
- coco_core/tools/convert.py +497 -0
- coco_core/tools/render.py +67 -0
- coco_core/tools/retriever.py +94 -0
- coco_core/tools/simple.py +208 -0
- coco_core/tools/structured.py +322 -0
- coco_core/tracers/__init__.py +47 -0
- coco_core/tracers/_compat.py +95 -0
- coco_core/tracers/_context.py +337 -0
- coco_core/tracers/_streaming.py +53 -0
- coco_core/tracers/base.py +955 -0
- coco_core/tracers/coco.py +279 -0
- coco_core/tracers/context.py +205 -0
- coco_core/tracers/core.py +766 -0
- coco_core/tracers/event_stream.py +1101 -0
- coco_core/tracers/log_stream.py +765 -0
- coco_core/tracers/memory_stream.py +200 -0
- coco_core/tracers/root_listeners.py +130 -0
- coco_core/tracers/run_collector.py +40 -0
- coco_core/tracers/schemas.py +14 -0
- coco_core/tracers/stdout.py +205 -0
- coco_core/utils/__init__.py +111 -0
- coco_core/utils/_gateway.py +274 -0
- coco_core/utils/_merge.py +218 -0
- coco_core/utils/aiter.py +357 -0
- coco_core/utils/env.py +86 -0
- coco_core/utils/formatting.py +80 -0
- coco_core/utils/function_calling.py +869 -0
- coco_core/utils/html.py +132 -0
- coco_core/utils/image.py +15 -0
- coco_core/utils/input.py +82 -0
- coco_core/utils/interactive_env.py +12 -0
- coco_core/utils/iter.py +229 -0
- coco_core/utils/json.py +230 -0
- coco_core/utils/json_schema.py +273 -0
- coco_core/utils/mustache.py +706 -0
- coco_core/utils/pydantic.py +631 -0
- coco_core/utils/strings.py +69 -0
- coco_core/utils/usage.py +61 -0
- coco_core/utils/utils.py +528 -0
- coco_core/utils/uuid.py +57 -0
- coco_core/vectorstores/__init__.py +53 -0
- coco_core/vectorstores/base.py +1111 -0
- coco_core/vectorstores/in_memory.py +546 -0
- coco_core/vectorstores/utils.py +163 -0
- coco_core/version.py +3 -0
- coco_framework-0.1.0.dist-info/METADATA +184 -0
- coco_framework-0.1.0.dist-info/RECORD +400 -0
- coco_framework-0.1.0.dist-info/WHEEL +4 -0
- coco_framework-0.1.0.dist-info/licenses/LICENSE +24 -0
- coco_framework-0.1.0.dist-info/licenses/NOTICE +15 -0
- coco_graph/_internal/__init__.py +4 -0
- coco_graph/_internal/_cache.py +31 -0
- coco_graph/_internal/_config.py +474 -0
- coco_graph/_internal/_constants.py +140 -0
- coco_graph/_internal/_fields.py +213 -0
- coco_graph/_internal/_future.py +220 -0
- coco_graph/_internal/_pydantic.py +275 -0
- coco_graph/_internal/_queue.py +124 -0
- coco_graph/_internal/_replay.py +90 -0
- coco_graph/_internal/_retry.py +29 -0
- coco_graph/_internal/_runnable.py +969 -0
- coco_graph/_internal/_scratchpad.py +19 -0
- coco_graph/_internal/_serde.py +253 -0
- coco_graph/_internal/_timeout.py +25 -0
- coco_graph/_internal/_typing.py +54 -0
- coco_graph/cache/base/__init__.py +48 -0
- coco_graph/cache/base/py.typed +0 -0
- coco_graph/cache/memory/__init__.py +73 -0
- coco_graph/cache/redis/__init__.py +144 -0
- coco_graph/cache/sqlite/__init__.py +120 -0
- coco_graph/callbacks.py +394 -0
- coco_graph/channels/__init__.py +29 -0
- coco_graph/channels/any_value.py +72 -0
- coco_graph/channels/base.py +121 -0
- coco_graph/channels/binop.py +155 -0
- coco_graph/channels/delta.py +202 -0
- coco_graph/channels/ephemeral_value.py +79 -0
- coco_graph/channels/last_value.py +151 -0
- coco_graph/channels/named_barrier_value.py +167 -0
- coco_graph/channels/topic.py +94 -0
- coco_graph/channels/untracked_value.py +73 -0
- coco_graph/checkpoint/base/__init__.py +861 -0
- coco_graph/checkpoint/base/id.py +109 -0
- coco_graph/checkpoint/base/py.typed +0 -0
- coco_graph/checkpoint/memory/__init__.py +698 -0
- coco_graph/checkpoint/memory/py.typed +0 -0
- coco_graph/checkpoint/postgres/__init__.py +602 -0
- coco_graph/checkpoint/postgres/_ainternal.py +23 -0
- coco_graph/checkpoint/postgres/_internal.py +21 -0
- coco_graph/checkpoint/postgres/aio.py +691 -0
- coco_graph/checkpoint/postgres/base.py +666 -0
- coco_graph/checkpoint/postgres/py.typed +0 -0
- coco_graph/checkpoint/postgres/shallow.py +967 -0
- coco_graph/checkpoint/serde/__init__.py +0 -0
- coco_graph/checkpoint/serde/_msgpack.py +97 -0
- coco_graph/checkpoint/serde/base.py +64 -0
- coco_graph/checkpoint/serde/encrypted.py +80 -0
- coco_graph/checkpoint/serde/event_hooks.py +52 -0
- coco_graph/checkpoint/serde/jsonplus.py +883 -0
- coco_graph/checkpoint/serde/py.typed +0 -0
- coco_graph/checkpoint/serde/types.py +68 -0
- coco_graph/checkpoint/sqlite/__init__.py +645 -0
- coco_graph/checkpoint/sqlite/_delta.py +172 -0
- coco_graph/checkpoint/sqlite/aio.py +738 -0
- coco_graph/checkpoint/sqlite/py.typed +0 -0
- coco_graph/checkpoint/sqlite/utils.py +116 -0
- coco_graph/config.py +196 -0
- coco_graph/constants.py +64 -0
- coco_graph/errors.py +241 -0
- coco_graph/func/__init__.py +620 -0
- coco_graph/graph/__init__.py +12 -0
- coco_graph/graph/_branch.py +225 -0
- coco_graph/graph/_node.py +103 -0
- coco_graph/graph/message.py +437 -0
- coco_graph/graph/state.py +1978 -0
- coco_graph/graph/ui.py +227 -0
- coco_graph/managed/__init__.py +3 -0
- coco_graph/managed/base.py +31 -0
- coco_graph/managed/is_last_step.py +24 -0
- coco_graph/prebuilt/__init__.py +23 -0
- coco_graph/prebuilt/_tool_call_stream.py +117 -0
- coco_graph/prebuilt/_tool_call_transformer.py +165 -0
- coco_graph/prebuilt/chat_agent_executor.py +1015 -0
- coco_graph/prebuilt/interrupt.py +105 -0
- coco_graph/prebuilt/py.typed +0 -0
- coco_graph/prebuilt/tool_node.py +2030 -0
- coco_graph/prebuilt/tool_validator.py +221 -0
- coco_graph/pregel/__init__.py +3 -0
- coco_graph/pregel/_algo.py +1460 -0
- coco_graph/pregel/_call.py +298 -0
- coco_graph/pregel/_checkpoint.py +331 -0
- coco_graph/pregel/_config.py +0 -0
- coco_graph/pregel/_draw.py +294 -0
- coco_graph/pregel/_executor.py +223 -0
- coco_graph/pregel/_io.py +174 -0
- coco_graph/pregel/_log.py +3 -0
- coco_graph/pregel/_loop.py +1988 -0
- coco_graph/pregel/_messages.py +461 -0
- coco_graph/pregel/_read.py +312 -0
- coco_graph/pregel/_retry.py +854 -0
- coco_graph/pregel/_runner.py +941 -0
- coco_graph/pregel/_tools.py +268 -0
- coco_graph/pregel/_utils.py +221 -0
- coco_graph/pregel/_validate.py +120 -0
- coco_graph/pregel/_write.py +192 -0
- coco_graph/pregel/debug.py +302 -0
- coco_graph/pregel/main.py +4364 -0
- coco_graph/pregel/protocol.py +288 -0
- coco_graph/pregel/types.py +38 -0
- coco_graph/py.typed +0 -0
- coco_graph/runtime.py +350 -0
- coco_graph/store/base/__init__.py +1322 -0
- coco_graph/store/base/batch.py +371 -0
- coco_graph/store/base/embed.py +436 -0
- coco_graph/store/base/py.typed +0 -0
- coco_graph/store/memory/__init__.py +592 -0
- coco_graph/store/memory/py.typed +0 -0
- coco_graph/store/postgres/__init__.py +4 -0
- coco_graph/store/postgres/aio.py +592 -0
- coco_graph/store/postgres/base.py +1480 -0
- coco_graph/store/postgres/py.typed +0 -0
- coco_graph/store/sqlite/__init__.py +4 -0
- coco_graph/store/sqlite/aio.py +632 -0
- coco_graph/store/sqlite/base.py +1514 -0
- coco_graph/stream/__init__.py +45 -0
- coco_graph/stream/_convert.py +32 -0
- coco_graph/stream/_mux.py +523 -0
- coco_graph/stream/_types.py +330 -0
- coco_graph/stream/run_stream.py +735 -0
- coco_graph/stream/stream_channel.py +341 -0
- coco_graph/stream/transformers.py +1039 -0
- coco_graph/types.py +1079 -0
- coco_graph/typing.py +48 -0
- coco_graph/utils/__init__.py +1 -0
- coco_graph/utils/config.py +4 -0
- coco_graph/utils/runnable.py +3 -0
- coco_graph/version.py +13 -0
- coco_graph/warnings.py +69 -0
- coco_openai/__init__.py +20 -0
- coco_openai/_compat.py +45 -0
- coco_openai/_version.py +3 -0
- coco_openai/chat_models/__init__.py +6 -0
- coco_openai/chat_models/_client_utils.py +684 -0
- coco_openai/chat_models/_compat.py +525 -0
- coco_openai/chat_models/azure.py +1227 -0
- coco_openai/chat_models/base.py +5654 -0
- coco_openai/chat_models/codex.py +557 -0
- coco_openai/chatgpt_oauth.py +1063 -0
- coco_openai/data/__init__.py +1 -0
- coco_openai/data/_profiles.py +1655 -0
- coco_openai/data/profile_augmentations.toml +127 -0
- coco_openai/embeddings/__init__.py +6 -0
- coco_openai/embeddings/azure.py +240 -0
- coco_openai/embeddings/base.py +820 -0
- coco_openai/llms/__init__.py +6 -0
- coco_openai/llms/azure.py +249 -0
- coco_openai/llms/base.py +919 -0
- coco_openai/middleware/__init__.py +11 -0
- coco_openai/middleware/openai_moderation.py +484 -0
- coco_openai/output_parsers/__init__.py +9 -0
- coco_openai/output_parsers/tools.py +9 -0
- coco_openai/py.typed +0 -0
- coco_openai/tools/__init__.py +5 -0
- coco_openai/tools/custom_tool.py +111 -0
coco_graph/typing.py
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing_extensions import TypeVar
|
|
4
|
+
|
|
5
|
+
from coco_graph._internal._typing import StateLike
|
|
6
|
+
|
|
7
|
+
__all__ = (
|
|
8
|
+
"StateT",
|
|
9
|
+
"StateT_co",
|
|
10
|
+
"StateT_contra",
|
|
11
|
+
"InputT",
|
|
12
|
+
"OutputT",
|
|
13
|
+
"ContextT",
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
StateT = TypeVar("StateT", bound=StateLike)
|
|
17
|
+
"""Type variable used to represent the state in a graph."""
|
|
18
|
+
|
|
19
|
+
StateT_co = TypeVar("StateT_co", bound=StateLike, covariant=True)
|
|
20
|
+
|
|
21
|
+
StateT_contra = TypeVar("StateT_contra", bound=StateLike, contravariant=True)
|
|
22
|
+
|
|
23
|
+
ContextT = TypeVar("ContextT", bound=StateLike | None, default=None)
|
|
24
|
+
"""Type variable used to represent graph run scoped context.
|
|
25
|
+
|
|
26
|
+
Defaults to `None`.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
ContextT_contra = TypeVar(
|
|
30
|
+
"ContextT_contra", bound=StateLike | None, contravariant=True, default=None
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
InputT = TypeVar("InputT", bound=StateLike, default=StateT)
|
|
34
|
+
"""Type variable used to represent the input to a `StateGraph`.
|
|
35
|
+
|
|
36
|
+
Defaults to `StateT`.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
OutputT = TypeVar("OutputT", bound=StateLike, default=StateT)
|
|
40
|
+
"""Type variable used to represent the output of a `StateGraph`.
|
|
41
|
+
|
|
42
|
+
Defaults to `StateT`.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
NodeInputT = TypeVar("NodeInputT", bound=StateLike)
|
|
46
|
+
"""Type variable used to represent the input to a node."""
|
|
47
|
+
|
|
48
|
+
NodeInputT_contra = TypeVar("NodeInputT_contra", bound=StateLike, contravariant=True)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Legacy utilities module, to be removed in v1."""
|
coco_graph/version.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""Exports package version."""
|
|
2
|
+
|
|
3
|
+
from importlib import metadata
|
|
4
|
+
|
|
5
|
+
__all__ = ("__version__",)
|
|
6
|
+
|
|
7
|
+
for _dist in ("trustcoco-graph", "coco-framework", __package__ or "coco_graph"):
|
|
8
|
+
try:
|
|
9
|
+
__version__ = metadata.version(_dist)
|
|
10
|
+
break
|
|
11
|
+
except metadata.PackageNotFoundError:
|
|
12
|
+
__version__ = ""
|
|
13
|
+
del _dist, metadata # optional, avoids polluting the results of dir(__package__)
|
coco_graph/warnings.py
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""CocoGraph specific warnings."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
__all__ = (
|
|
6
|
+
"CocoGraphDeprecationWarning",
|
|
7
|
+
"CocoGraphDeprecatedSinceV05",
|
|
8
|
+
"CocoGraphDeprecatedSinceV10",
|
|
9
|
+
"CocoGraphDeprecatedSinceV11",
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CocoGraphDeprecationWarning(DeprecationWarning):
|
|
14
|
+
"""A CocoGraph specific deprecation warning.
|
|
15
|
+
|
|
16
|
+
Attributes:
|
|
17
|
+
message: Description of the warning.
|
|
18
|
+
since: CocoGraph version in which the deprecation was introduced.
|
|
19
|
+
expected_removal: CocoGraph version in what the corresponding functionality expected to be removed.
|
|
20
|
+
|
|
21
|
+
Inspired by the Pydantic `PydanticDeprecationWarning` class, which sets a great standard
|
|
22
|
+
for deprecation warnings with clear versioning information.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
message: str
|
|
26
|
+
since: tuple[int, int]
|
|
27
|
+
expected_removal: tuple[int, int]
|
|
28
|
+
|
|
29
|
+
def __init__(
|
|
30
|
+
self,
|
|
31
|
+
message: str,
|
|
32
|
+
*args: object,
|
|
33
|
+
since: tuple[int, int],
|
|
34
|
+
expected_removal: tuple[int, int] | None = None,
|
|
35
|
+
) -> None:
|
|
36
|
+
super().__init__(message, *args)
|
|
37
|
+
self.message = message.rstrip(".")
|
|
38
|
+
self.since = since
|
|
39
|
+
self.expected_removal = (
|
|
40
|
+
expected_removal if expected_removal is not None else (since[0] + 1, 0)
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
def __str__(self) -> str:
|
|
44
|
+
message = (
|
|
45
|
+
f"{self.message}. Deprecated in CocoGraph V{self.since[0]}.{self.since[1]}"
|
|
46
|
+
f" to be removed in V{self.expected_removal[0]}.{self.expected_removal[1]}."
|
|
47
|
+
)
|
|
48
|
+
return message
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class CocoGraphDeprecatedSinceV05(CocoGraphDeprecationWarning):
|
|
52
|
+
"""A specific `CocoGraphDeprecationWarning` subclass defining functionality deprecated since CocoGraph v0.5.0"""
|
|
53
|
+
|
|
54
|
+
def __init__(self, message: str, *args: object) -> None:
|
|
55
|
+
super().__init__(message, *args, since=(0, 5), expected_removal=(2, 0))
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class CocoGraphDeprecatedSinceV10(CocoGraphDeprecationWarning):
|
|
59
|
+
"""A specific `CocoGraphDeprecationWarning` subclass defining functionality deprecated since CocoGraph v1.0.0"""
|
|
60
|
+
|
|
61
|
+
def __init__(self, message: str, *args: object) -> None:
|
|
62
|
+
super().__init__(message, *args, since=(1, 0), expected_removal=(2, 0))
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class CocoGraphDeprecatedSinceV11(CocoGraphDeprecationWarning):
|
|
66
|
+
"""A specific `CocoGraphDeprecationWarning` subclass defining functionality deprecated since CocoGraph v1.1.0"""
|
|
67
|
+
|
|
68
|
+
def __init__(self, message: str, *args: object) -> None:
|
|
69
|
+
super().__init__(message, *args, since=(1, 1), expected_removal=(3, 0))
|
coco_openai/__init__.py
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""Module for OpenAI integrations."""
|
|
2
|
+
|
|
3
|
+
from coco_openai._version import __version__
|
|
4
|
+
from coco_openai.chat_models import AzureChatOpenAI, ChatOpenAI
|
|
5
|
+
from coco_openai.chat_models._client_utils import StreamChunkTimeoutError
|
|
6
|
+
from coco_openai.embeddings import AzureOpenAIEmbeddings, OpenAIEmbeddings
|
|
7
|
+
from coco_openai.llms import AzureOpenAI, OpenAI
|
|
8
|
+
from coco_openai.tools import custom_tool
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
"AzureChatOpenAI",
|
|
12
|
+
"AzureOpenAI",
|
|
13
|
+
"AzureOpenAIEmbeddings",
|
|
14
|
+
"ChatOpenAI",
|
|
15
|
+
"OpenAI",
|
|
16
|
+
"OpenAIEmbeddings",
|
|
17
|
+
"StreamChunkTimeoutError",
|
|
18
|
+
"__version__",
|
|
19
|
+
"custom_tool",
|
|
20
|
+
]
|
coco_openai/_compat.py
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""Resolve the `httpx` library matching the installed `openai` SDK.
|
|
2
|
+
|
|
3
|
+
`openai>=3` is backed by `httpx2` (an API-identical drop-in for `httpx`),
|
|
4
|
+
`openai<3` by `httpx`. Transport/config objects injected into the SDK client
|
|
5
|
+
are built from the same library, so this module re-exports whichever one the
|
|
6
|
+
installed SDK version defaults to.
|
|
7
|
+
|
|
8
|
+
Import `httpx` from here **only** for objects handed to the OpenAI SDK client
|
|
9
|
+
(e.g. a custom transport, `Limits`, `Proxy`, or `http_client=`). Standalone HTTP
|
|
10
|
+
code should import `httpx` directly.
|
|
11
|
+
|
|
12
|
+
Note: the SDK's `DefaultHttpxClient`/`DefaultAsyncHttpxClient` classes are *not*
|
|
13
|
+
re-exported here — they are subclassable in both SDK versions (backed by
|
|
14
|
+
`httpx2` on `openai>=3`), so subclass `openai.DefaultHttpxClient` directly. The
|
|
15
|
+
`DefaultHttpx2Client` names are factory functions, not classes, and cannot be
|
|
16
|
+
subclassed.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
from __future__ import annotations
|
|
20
|
+
|
|
21
|
+
import re
|
|
22
|
+
from typing import TYPE_CHECKING
|
|
23
|
+
|
|
24
|
+
import openai
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _sdk_uses_httpx2() -> bool:
|
|
28
|
+
"""Whether the installed `openai` SDK defaults to `httpx2` (openai>=3)."""
|
|
29
|
+
# First integer run, so tag-derived strings like `v3.0.0` still parse;
|
|
30
|
+
# unparseable falls back to classic httpx (always present).
|
|
31
|
+
match = re.match(r"\D*(\d+)", str(getattr(openai, "__version__", "")))
|
|
32
|
+
return match is not None and int(match.group(1)) >= 3
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
if TYPE_CHECKING:
|
|
36
|
+
# Type-check against `httpx`, whose API `httpx2` mirrors. This keeps mypy
|
|
37
|
+
# working in the lint environment (which installs `httpx`, not `httpx2`)
|
|
38
|
+
# while the runtime selection below picks the correct module.
|
|
39
|
+
import httpx
|
|
40
|
+
elif _sdk_uses_httpx2():
|
|
41
|
+
import httpx2 as httpx # type: ignore[import-not-found]
|
|
42
|
+
else:
|
|
43
|
+
import httpx
|
|
44
|
+
|
|
45
|
+
__all__ = ["httpx"]
|
coco_openai/_version.py
ADDED