langgraph-api 0.7.90__tar.gz → 0.7.91__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.
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/PKG-INFO +2 -1
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/Makefile +0 -5
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/README.md +5 -14
- langgraph_api-0.7.91/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/config.py +1 -1
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/stream_codec.py +22 -14
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/pyproject.toml +1 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/uv.lock +53 -51
- langgraph_api-0.7.90/benchmark/burst.js +0 -219
- langgraph_api-0.7.90/langgraph_api/__init__.py +0 -1
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/.gitignore +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/LICENSE +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/Makefile +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/README.md +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/.gitignore +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/assistant.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/benchmarks.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/log-failure.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/meta_workload.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/random_stream.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/stream_write.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/thread.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/types.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/wait_write.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/capacity_dd_report.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/capacity_k6.js +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/capacity_runner.mjs +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/capacity_slack_report.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/capacity_urls.mjs +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/clean-cli.js +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/clean.js +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/continuous/README.md +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/continuous/pyproject.toml +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/continuous/runner.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/continuous/uv.lock +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/graphs.js +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/mixed_workload_k6.js +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/mixed_workload_runner.mjs +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/package.json +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/ramp.js +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/reporting/slack_slowest_runs.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/reporting/slack_summary.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/run_local.sh +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/staircase.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/staircase_step_k6.js +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/tsconfig.json +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/weather.js +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/constraints.txt +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/custom_store.sql +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/forbidden.txt +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/hatch_build.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/healthcheck.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph-cloud-debugging-20260210132856.zip +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/_checkpointer/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/_checkpointer/_adapter.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/_checkpointer/protocol.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/_factory_utils.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/a2a.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/_constants.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/_handlers.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/_models.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/_routes.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/_sanitizers.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/profile.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/errors.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/cache.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/command.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/config/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/config/_parse.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/config/schemas.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/aes_json.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/context.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/custom.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/middleware.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/shared.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/executor_entrypoint.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/feature_flags.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/client.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/assistants.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/cache.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/crons.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/runs.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/threads.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/server.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/servicers/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/servicers/encryption.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/http.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/client.mts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/metrics_datadog.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/middleware/ensure_store.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/otel_context.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/route.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/schema.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/self_hosted_logs.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/self_hosted_metrics.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/server.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/state.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/store.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/stream.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/timing/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/timing/profiler.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/timing/timer.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/extract.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/headers.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/checkpointer.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/_compat.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/channel.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/config.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/durability.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/exception.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/graph.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/interrupt.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/messages.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/orchestrator_response.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/runopts.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/stream_mode.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/struct.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/task.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/value.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_api_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_api_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_api_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/executor_api_pb2.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/executor_api_pb2.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/executor_api_pb2_grpc.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/executor_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/sanitize.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/serde.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/routes.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/logging.json +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/openapi.json +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/scripts/build_wheel.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/scripts/create_license.py +0 -0
- {langgraph_api-0.7.90 → langgraph_api-0.7.91}/scripts/run_a2a_tck.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-api
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.91
|
|
4
4
|
Author-email: Will Fu-Hinthorn <will@langchain.dev>, Josh Rogers <josh@langchain.dev>, Parker Rule <parker@langchain.dev>
|
|
5
5
|
License: Elastic-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -32,6 +32,7 @@ Requires-Dist: truststore>=0.1
|
|
|
32
32
|
Requires-Dist: uuid-utils>=0.12.0
|
|
33
33
|
Requires-Dist: uvicorn>=0.26.0
|
|
34
34
|
Requires-Dist: watchfiles>=0.13
|
|
35
|
+
Requires-Dist: zstandard>=0.23.0
|
|
35
36
|
Description-Content-Type: text/markdown
|
|
36
37
|
|
|
37
38
|
# LangGraph API
|
|
@@ -6,11 +6,8 @@ K6 is a modern load testing tool that allows you to test the performance and rel
|
|
|
6
6
|
|
|
7
7
|
### Available Tests
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
1. `
|
|
11
|
-
Available Params:
|
|
12
|
-
BURST_SIZE - How many requests to run. Default: 100
|
|
13
|
-
2. `Ramp` - Scale up the number of /run/wait requests and then plateau.
|
|
9
|
+
Available test:
|
|
10
|
+
1. `Ramp` - Scale up the number of /run/wait requests and then plateau.
|
|
14
11
|
Available Params:
|
|
15
12
|
LOAD_SIZE - How much traffic to ramp up over a 60s period. Default: 500
|
|
16
13
|
LEVELS - The number of times to ramp up. Default: 2
|
|
@@ -45,17 +42,11 @@ Available Params:
|
|
|
45
42
|
### Basic Usage
|
|
46
43
|
|
|
47
44
|
```bash
|
|
48
|
-
# Run burst test with default burst size
|
|
49
|
-
make benchmark-burst
|
|
50
|
-
|
|
51
|
-
# Run burst test with custom burst size
|
|
52
|
-
BURST_SIZE=500 make benchmark-burst
|
|
53
|
-
|
|
54
45
|
# Run ramp test with a different mode and expand size
|
|
55
46
|
MODE='parallel' EXPAND=100 make benchmark-ramp
|
|
56
47
|
|
|
57
|
-
# Run
|
|
58
|
-
BASE_URL=https://jdr-benchmark-1cfe27c4cd375e1c999f02f186f617f6.us.langgraph.app make benchmark-
|
|
48
|
+
# Run ramp test against a deployment
|
|
49
|
+
BASE_URL=https://jdr-benchmark-1cfe27c4cd375e1c999f02f186f617f6.us.langgraph.app make benchmark-ramp
|
|
59
50
|
|
|
60
51
|
# Clean up result files
|
|
61
52
|
make benchmark-clean
|
|
@@ -63,7 +54,7 @@ make benchmark-clean
|
|
|
63
54
|
|
|
64
55
|
### Output
|
|
65
56
|
|
|
66
|
-
Summary results are written to stdout and persisted in a
|
|
57
|
+
Summary results are written to stdout and persisted in a summary file. More detailed results for the same run are persisted in a results file.
|
|
67
58
|
|
|
68
59
|
Charts can be created from the run locally using the `make benchmark-charts` command.
|
|
69
60
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.7.91"
|
|
@@ -41,7 +41,7 @@ COPIABLE_KEYS = [
|
|
|
41
41
|
"configurable",
|
|
42
42
|
]
|
|
43
43
|
|
|
44
|
-
DEFAULT_RECURSION_LIMIT = int(getenv("LANGGRAPH_DEFAULT_RECURSION_LIMIT", "
|
|
44
|
+
DEFAULT_RECURSION_LIMIT = int(getenv("LANGGRAPH_DEFAULT_RECURSION_LIMIT", "10011"))
|
|
45
45
|
|
|
46
46
|
T = TypeVar("T")
|
|
47
47
|
P = ParamSpec("P")
|
|
@@ -5,10 +5,11 @@ from dataclasses import dataclass
|
|
|
5
5
|
|
|
6
6
|
import orjson
|
|
7
7
|
import structlog
|
|
8
|
+
import zstandard
|
|
8
9
|
|
|
9
10
|
PROTOCOL_VERSION = 1
|
|
11
|
+
PROTOCOL_VERSION_COMPRESSED = 2
|
|
10
12
|
"""
|
|
11
|
-
---
|
|
12
13
|
Version 1:
|
|
13
14
|
Byte Offsets
|
|
14
15
|
0 1 3 5 5+N 5+N+M
|
|
@@ -17,6 +18,8 @@ Byte Offsets
|
|
|
17
18
|
+--------+------------------+----------------+------------------+------------------+--------------------+
|
|
18
19
|
1 B 2 B 2 B N B M B variable
|
|
19
20
|
|
|
21
|
+
Version 2: Same header layout as v1, but message is zstd-compressed.
|
|
22
|
+
|
|
20
23
|
---- Old (to be dropped soon / multiple formats)
|
|
21
24
|
Version 0 (old):
|
|
22
25
|
1) b"$:" + <stream_id> + b"$:" + <event> + b"$:" + <raw_json>
|
|
@@ -27,6 +30,8 @@ BYTE_MASK = 0xFF
|
|
|
27
30
|
HEADER_LEN = 5
|
|
28
31
|
logger = structlog.stdlib.get_logger(__name__)
|
|
29
32
|
|
|
33
|
+
_zstd_decompressor = zstandard.ZstdDecompressor()
|
|
34
|
+
|
|
30
35
|
|
|
31
36
|
class StreamFormatError(ValueError):
|
|
32
37
|
"""Raised when a stream frame fails validation."""
|
|
@@ -67,12 +72,9 @@ class StreamPacket:
|
|
|
67
72
|
|
|
68
73
|
|
|
69
74
|
class StreamCodec:
|
|
70
|
-
"""
|
|
71
|
-
|
|
72
|
-
__slots__ = ("_version",)
|
|
75
|
+
"""Encodes v1 stream frames and decodes any supported version (v1, v2)."""
|
|
73
76
|
|
|
74
|
-
|
|
75
|
-
self._version = protocol_version & BYTE_MASK
|
|
77
|
+
__slots__ = ()
|
|
76
78
|
|
|
77
79
|
def encode(
|
|
78
80
|
self,
|
|
@@ -86,11 +88,8 @@ class StreamCodec:
|
|
|
86
88
|
event_bytes = event.encode("utf-8")
|
|
87
89
|
if len(event_bytes) > 0xFFFF:
|
|
88
90
|
raise StreamFormatError("event exceeds 65535 bytes; cannot encode")
|
|
89
|
-
if not event_bytes:
|
|
90
|
-
raise StreamFormatError("event cannot be empty")
|
|
91
91
|
|
|
92
92
|
if stream_id:
|
|
93
|
-
# It's a resumable stream
|
|
94
93
|
stream_id_bytes = stream_id.encode("utf-8")
|
|
95
94
|
if len(stream_id_bytes) > 0xFFFF:
|
|
96
95
|
raise StreamFormatError("stream_id exceeds 65535 bytes; cannot encode")
|
|
@@ -99,7 +98,7 @@ class StreamCodec:
|
|
|
99
98
|
stream_id_len = len(stream_id_bytes) if stream_id_bytes else 0
|
|
100
99
|
event_len = len(event_bytes)
|
|
101
100
|
frame = bytearray(HEADER_LEN + stream_id_len + event_len + len(message))
|
|
102
|
-
frame[0] =
|
|
101
|
+
frame[0] = PROTOCOL_VERSION
|
|
103
102
|
frame[1:3] = stream_id_len.to_bytes(2, "big")
|
|
104
103
|
frame[3:5] = event_len.to_bytes(2, "big")
|
|
105
104
|
|
|
@@ -119,7 +118,7 @@ class StreamCodec:
|
|
|
119
118
|
raise StreamFormatError("frame too short")
|
|
120
119
|
|
|
121
120
|
version = view[0]
|
|
122
|
-
if version
|
|
121
|
+
if version not in (PROTOCOL_VERSION, PROTOCOL_VERSION_COMPRESSED):
|
|
123
122
|
raise StreamFormatError(f"unsupported protocol version: {version}")
|
|
124
123
|
|
|
125
124
|
stream_id_len = int.from_bytes(view[1:3], "big")
|
|
@@ -131,13 +130,22 @@ class StreamCodec:
|
|
|
131
130
|
stream_id_view = view[offset : offset + stream_id_len]
|
|
132
131
|
offset += stream_id_len
|
|
133
132
|
else:
|
|
134
|
-
# Not resumable
|
|
135
133
|
stream_id_view = None
|
|
136
134
|
if len(view) < offset + event_len:
|
|
137
135
|
raise StreamFormatError("truncated event payload")
|
|
138
136
|
event_view = view[offset : offset + event_len]
|
|
139
137
|
offset += event_len
|
|
140
138
|
message_view = view[offset:]
|
|
139
|
+
|
|
140
|
+
if version == PROTOCOL_VERSION_COMPRESSED:
|
|
141
|
+
try:
|
|
142
|
+
decompressed = _zstd_decompressor.decompress(message_view)
|
|
143
|
+
except zstandard.ZstdError as exc:
|
|
144
|
+
raise StreamFormatError(
|
|
145
|
+
f"failed to decompress zstd message: {exc}"
|
|
146
|
+
) from exc
|
|
147
|
+
message_view = memoryview(decompressed)
|
|
148
|
+
|
|
141
149
|
return StreamPacket(
|
|
142
150
|
version=version,
|
|
143
151
|
event=event_view,
|
|
@@ -149,7 +157,7 @@ class StreamCodec:
|
|
|
149
157
|
try:
|
|
150
158
|
return self.decode(data)
|
|
151
159
|
except StreamFormatError as e:
|
|
152
|
-
logger.warning(
|
|
160
|
+
logger.warning("Failed to decode stream frame", error=e)
|
|
153
161
|
return None
|
|
154
162
|
|
|
155
163
|
|
|
@@ -169,7 +177,7 @@ def decode_stream_message(
|
|
|
169
177
|
logger.warning("Unknown type for stream message", type=type(data))
|
|
170
178
|
view = memoryview(bytes(data))
|
|
171
179
|
|
|
172
|
-
# Current protocol version
|
|
180
|
+
# Current protocol version (v1 + v2)
|
|
173
181
|
if packet := STREAM_CODEC.decode_safe(view):
|
|
174
182
|
return packet
|
|
175
183
|
logger.debug("Attempting to decode a v0 formatted stream message")
|
|
@@ -275,61 +275,61 @@ wheels = [
|
|
|
275
275
|
|
|
276
276
|
[[package]]
|
|
277
277
|
name = "cryptography"
|
|
278
|
-
version = "46.0.
|
|
278
|
+
version = "46.0.6"
|
|
279
279
|
source = { registry = "https://pypi.org/simple" }
|
|
280
280
|
dependencies = [
|
|
281
281
|
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
|
|
282
282
|
]
|
|
283
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
284
|
-
wheels = [
|
|
285
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
286
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
287
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
288
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
289
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
290
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
291
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
292
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
293
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
294
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
295
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
296
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
297
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
298
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
299
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
300
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
301
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
302
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
303
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
304
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
305
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
306
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
307
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
308
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
309
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
310
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
311
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
312
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
313
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
314
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
315
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
316
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
317
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
318
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
319
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
320
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
321
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
322
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
323
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
324
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
325
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
326
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
327
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
328
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
329
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
330
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
331
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
332
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
283
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a4/ba/04b1bd4218cbc58dc90ce967106d51582371b898690f3ae0402876cc4f34/cryptography-46.0.6.tar.gz", hash = "sha256:27550628a518c5c6c903d84f637fbecf287f6cb9ced3804838a1295dc1fd0759", size = 750542, upload-time = "2026-03-25T23:34:53.396Z" }
|
|
284
|
+
wheels = [
|
|
285
|
+
{ url = "https://files.pythonhosted.org/packages/47/23/9285e15e3bc57325b0a72e592921983a701efc1ee8f91c06c5f0235d86d9/cryptography-46.0.6-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:64235194bad039a10bb6d2d930ab3323baaec67e2ce36215fd0952fad0930ca8", size = 7176401, upload-time = "2026-03-25T23:33:22.096Z" },
|
|
286
|
+
{ url = "https://files.pythonhosted.org/packages/60/f8/e61f8f13950ab6195b31913b42d39f0f9afc7d93f76710f299b5ec286ae6/cryptography-46.0.6-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:26031f1e5ca62fcb9d1fcb34b2b60b390d1aacaa15dc8b895a9ed00968b97b30", size = 4275275, upload-time = "2026-03-25T23:33:23.844Z" },
|
|
287
|
+
{ url = "https://files.pythonhosted.org/packages/19/69/732a736d12c2631e140be2348b4ad3d226302df63ef64d30dfdb8db7ad1c/cryptography-46.0.6-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9a693028b9cbe51b5a1136232ee8f2bc242e4e19d456ded3fa7c86e43c713b4a", size = 4425320, upload-time = "2026-03-25T23:33:25.703Z" },
|
|
288
|
+
{ url = "https://files.pythonhosted.org/packages/d4/12/123be7292674abf76b21ac1fc0e1af50661f0e5b8f0ec8285faac18eb99e/cryptography-46.0.6-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:67177e8a9f421aa2d3a170c3e56eca4e0128883cf52a071a7cbf53297f18b175", size = 4278082, upload-time = "2026-03-25T23:33:27.423Z" },
|
|
289
|
+
{ url = "https://files.pythonhosted.org/packages/5b/ba/d5e27f8d68c24951b0a484924a84c7cdaed7502bac9f18601cd357f8b1d2/cryptography-46.0.6-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:d9528b535a6c4f8ff37847144b8986a9a143585f0540fbcb1a98115b543aa463", size = 4926514, upload-time = "2026-03-25T23:33:29.206Z" },
|
|
290
|
+
{ url = "https://files.pythonhosted.org/packages/34/71/1ea5a7352ae516d5512d17babe7e1b87d9db5150b21f794b1377eac1edc0/cryptography-46.0.6-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:22259338084d6ae497a19bae5d4c66b7ca1387d3264d1c2c0e72d9e9b6a77b97", size = 4457766, upload-time = "2026-03-25T23:33:30.834Z" },
|
|
291
|
+
{ url = "https://files.pythonhosted.org/packages/01/59/562be1e653accee4fdad92c7a2e88fced26b3fdfce144047519bbebc299e/cryptography-46.0.6-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:760997a4b950ff00d418398ad73fbc91aa2894b5c1db7ccb45b4f68b42a63b3c", size = 3986535, upload-time = "2026-03-25T23:33:33.02Z" },
|
|
292
|
+
{ url = "https://files.pythonhosted.org/packages/d6/8b/b1ebfeb788bf4624d36e45ed2662b8bd43a05ff62157093c1539c1288a18/cryptography-46.0.6-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3dfa6567f2e9e4c5dceb8ccb5a708158a2a871052fa75c8b78cb0977063f1507", size = 4277618, upload-time = "2026-03-25T23:33:34.567Z" },
|
|
293
|
+
{ url = "https://files.pythonhosted.org/packages/dd/52/a005f8eabdb28df57c20f84c44d397a755782d6ff6d455f05baa2785bd91/cryptography-46.0.6-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:cdcd3edcbc5d55757e5f5f3d330dd00007ae463a7e7aa5bf132d1f22a4b62b19", size = 4890802, upload-time = "2026-03-25T23:33:37.034Z" },
|
|
294
|
+
{ url = "https://files.pythonhosted.org/packages/ec/4d/8e7d7245c79c617d08724e2efa397737715ca0ec830ecb3c91e547302555/cryptography-46.0.6-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:d4e4aadb7fc1f88687f47ca20bb7227981b03afaae69287029da08096853b738", size = 4457425, upload-time = "2026-03-25T23:33:38.904Z" },
|
|
295
|
+
{ url = "https://files.pythonhosted.org/packages/1d/5c/f6c3596a1430cec6f949085f0e1a970638d76f81c3ea56d93d564d04c340/cryptography-46.0.6-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2b417edbe8877cda9022dde3a008e2deb50be9c407eef034aeeb3a8b11d9db3c", size = 4405530, upload-time = "2026-03-25T23:33:40.842Z" },
|
|
296
|
+
{ url = "https://files.pythonhosted.org/packages/7e/c9/9f9cea13ee2dbde070424e0c4f621c091a91ffcc504ffea5e74f0e1daeff/cryptography-46.0.6-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:380343e0653b1c9d7e1f55b52aaa2dbb2fdf2730088d48c43ca1c7c0abb7cc2f", size = 4667896, upload-time = "2026-03-25T23:33:42.781Z" },
|
|
297
|
+
{ url = "https://files.pythonhosted.org/packages/ad/b5/1895bc0821226f129bc74d00eccfc6a5969e2028f8617c09790bf89c185e/cryptography-46.0.6-cp311-abi3-win32.whl", hash = "sha256:bcb87663e1f7b075e48c3be3ecb5f0b46c8fc50b50a97cf264e7f60242dca3f2", size = 3026348, upload-time = "2026-03-25T23:33:45.021Z" },
|
|
298
|
+
{ url = "https://files.pythonhosted.org/packages/c3/f8/c9bcbf0d3e6ad288b9d9aa0b1dee04b063d19e8c4f871855a03ab3a297ab/cryptography-46.0.6-cp311-abi3-win_amd64.whl", hash = "sha256:6739d56300662c468fddb0e5e291f9b4d084bead381667b9e654c7dd81705124", size = 3483896, upload-time = "2026-03-25T23:33:46.649Z" },
|
|
299
|
+
{ url = "https://files.pythonhosted.org/packages/01/41/3a578f7fd5c70611c0aacba52cd13cb364a5dee895a5c1d467208a9380b0/cryptography-46.0.6-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:2ef9e69886cbb137c2aef9772c2e7138dc581fad4fcbcf13cc181eb5a3ab6275", size = 7117147, upload-time = "2026-03-25T23:33:48.249Z" },
|
|
300
|
+
{ url = "https://files.pythonhosted.org/packages/fa/87/887f35a6fca9dde90cad08e0de0c89263a8e59b2d2ff904fd9fcd8025b6f/cryptography-46.0.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7f417f034f91dcec1cb6c5c35b07cdbb2ef262557f701b4ecd803ee8cefed4f4", size = 4266221, upload-time = "2026-03-25T23:33:49.874Z" },
|
|
301
|
+
{ url = "https://files.pythonhosted.org/packages/aa/a8/0a90c4f0b0871e0e3d1ed126aed101328a8a57fd9fd17f00fb67e82a51ca/cryptography-46.0.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d24c13369e856b94892a89ddf70b332e0b70ad4a5c43cf3e9cb71d6d7ffa1f7b", size = 4408952, upload-time = "2026-03-25T23:33:52.128Z" },
|
|
302
|
+
{ url = "https://files.pythonhosted.org/packages/16/0b/b239701eb946523e4e9f329336e4ff32b1247e109cbab32d1a7b61da8ed7/cryptography-46.0.6-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:aad75154a7ac9039936d50cf431719a2f8d4ed3d3c277ac03f3339ded1a5e707", size = 4270141, upload-time = "2026-03-25T23:33:54.11Z" },
|
|
303
|
+
{ url = "https://files.pythonhosted.org/packages/0f/a8/976acdd4f0f30df7b25605f4b9d3d89295351665c2091d18224f7ad5cdbf/cryptography-46.0.6-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:3c21d92ed15e9cfc6eb64c1f5a0326db22ca9c2566ca46d845119b45b4400361", size = 4904178, upload-time = "2026-03-25T23:33:55.725Z" },
|
|
304
|
+
{ url = "https://files.pythonhosted.org/packages/b1/1b/bf0e01a88efd0e59679b69f42d4afd5bced8700bb5e80617b2d63a3741af/cryptography-46.0.6-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:4668298aef7cddeaf5c6ecc244c2302a2b8e40f384255505c22875eebb47888b", size = 4441812, upload-time = "2026-03-25T23:33:57.364Z" },
|
|
305
|
+
{ url = "https://files.pythonhosted.org/packages/bb/8b/11df86de2ea389c65aa1806f331cae145f2ed18011f30234cc10ca253de8/cryptography-46.0.6-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:8ce35b77aaf02f3b59c90b2c8a05c73bac12cea5b4e8f3fbece1f5fddea5f0ca", size = 3963923, upload-time = "2026-03-25T23:33:59.361Z" },
|
|
306
|
+
{ url = "https://files.pythonhosted.org/packages/91/e0/207fb177c3a9ef6a8108f234208c3e9e76a6aa8cf20d51932916bd43bda0/cryptography-46.0.6-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:c89eb37fae9216985d8734c1afd172ba4927f5a05cfd9bf0e4863c6d5465b013", size = 4269695, upload-time = "2026-03-25T23:34:00.909Z" },
|
|
307
|
+
{ url = "https://files.pythonhosted.org/packages/21/5e/19f3260ed1e95bced52ace7501fabcd266df67077eeb382b79c81729d2d3/cryptography-46.0.6-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:ed418c37d095aeddf5336898a132fba01091f0ac5844e3e8018506f014b6d2c4", size = 4869785, upload-time = "2026-03-25T23:34:02.796Z" },
|
|
308
|
+
{ url = "https://files.pythonhosted.org/packages/10/38/cd7864d79aa1d92ef6f1a584281433419b955ad5a5ba8d1eb6c872165bcb/cryptography-46.0.6-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:69cf0056d6947edc6e6760e5f17afe4bea06b56a9ac8a06de9d2bd6b532d4f3a", size = 4441404, upload-time = "2026-03-25T23:34:04.35Z" },
|
|
309
|
+
{ url = "https://files.pythonhosted.org/packages/09/0a/4fe7a8d25fed74419f91835cf5829ade6408fd1963c9eae9c4bce390ecbb/cryptography-46.0.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8e7304c4f4e9490e11efe56af6713983460ee0780f16c63f219984dab3af9d2d", size = 4397549, upload-time = "2026-03-25T23:34:06.342Z" },
|
|
310
|
+
{ url = "https://files.pythonhosted.org/packages/5f/a0/7d738944eac6513cd60a8da98b65951f4a3b279b93479a7e8926d9cd730b/cryptography-46.0.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b928a3ca837c77a10e81a814a693f2295200adb3352395fad024559b7be7a736", size = 4651874, upload-time = "2026-03-25T23:34:07.916Z" },
|
|
311
|
+
{ url = "https://files.pythonhosted.org/packages/cb/f1/c2326781ca05208845efca38bf714f76939ae446cd492d7613808badedf1/cryptography-46.0.6-cp314-cp314t-win32.whl", hash = "sha256:97c8115b27e19e592a05c45d0dd89c57f81f841cc9880e353e0d3bf25b2139ed", size = 3001511, upload-time = "2026-03-25T23:34:09.892Z" },
|
|
312
|
+
{ url = "https://files.pythonhosted.org/packages/c9/57/fe4a23eb549ac9d903bd4698ffda13383808ef0876cc912bcb2838799ece/cryptography-46.0.6-cp314-cp314t-win_amd64.whl", hash = "sha256:c797e2517cb7880f8297e2c0f43bb910e91381339336f75d2c1c2cbf811b70b4", size = 3471692, upload-time = "2026-03-25T23:34:11.613Z" },
|
|
313
|
+
{ url = "https://files.pythonhosted.org/packages/c4/cc/f330e982852403da79008552de9906804568ae9230da8432f7496ce02b71/cryptography-46.0.6-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:12cae594e9473bca1a7aceb90536060643128bb274fcea0fc459ab90f7d1ae7a", size = 7162776, upload-time = "2026-03-25T23:34:13.308Z" },
|
|
314
|
+
{ url = "https://files.pythonhosted.org/packages/49/b3/dc27efd8dcc4bff583b3f01d4a3943cd8b5821777a58b3a6a5f054d61b79/cryptography-46.0.6-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:639301950939d844a9e1c4464d7e07f902fe9a7f6b215bb0d4f28584729935d8", size = 4270529, upload-time = "2026-03-25T23:34:15.019Z" },
|
|
315
|
+
{ url = "https://files.pythonhosted.org/packages/e6/05/e8d0e6eb4f0d83365b3cb0e00eb3c484f7348db0266652ccd84632a3d58d/cryptography-46.0.6-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ed3775295fb91f70b4027aeba878d79b3e55c0b3e97eaa4de71f8f23a9f2eb77", size = 4414827, upload-time = "2026-03-25T23:34:16.604Z" },
|
|
316
|
+
{ url = "https://files.pythonhosted.org/packages/2f/97/daba0f5d2dc6d855e2dcb70733c812558a7977a55dd4a6722756628c44d1/cryptography-46.0.6-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8927ccfbe967c7df312ade694f987e7e9e22b2425976ddbf28271d7e58845290", size = 4271265, upload-time = "2026-03-25T23:34:18.586Z" },
|
|
317
|
+
{ url = "https://files.pythonhosted.org/packages/89/06/fe1fce39a37ac452e58d04b43b0855261dac320a2ebf8f5260dd55b201a9/cryptography-46.0.6-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:b12c6b1e1651e42ab5de8b1e00dc3b6354fdfd778e7fa60541ddacc27cd21410", size = 4916800, upload-time = "2026-03-25T23:34:20.561Z" },
|
|
318
|
+
{ url = "https://files.pythonhosted.org/packages/ff/8a/b14f3101fe9c3592603339eb5d94046c3ce5f7fc76d6512a2d40efd9724e/cryptography-46.0.6-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:063b67749f338ca9c5a0b7fe438a52c25f9526b851e24e6c9310e7195aad3b4d", size = 4448771, upload-time = "2026-03-25T23:34:22.406Z" },
|
|
319
|
+
{ url = "https://files.pythonhosted.org/packages/01/b3/0796998056a66d1973fd52ee89dc1bb3b6581960a91ad4ac705f182d398f/cryptography-46.0.6-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:02fad249cb0e090b574e30b276a3da6a149e04ee2f049725b1f69e7b8351ec70", size = 3978333, upload-time = "2026-03-25T23:34:24.281Z" },
|
|
320
|
+
{ url = "https://files.pythonhosted.org/packages/c5/3d/db200af5a4ffd08918cd55c08399dc6c9c50b0bc72c00a3246e099d3a849/cryptography-46.0.6-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:7e6142674f2a9291463e5e150090b95a8519b2fb6e6aaec8917dd8d094ce750d", size = 4271069, upload-time = "2026-03-25T23:34:25.895Z" },
|
|
321
|
+
{ url = "https://files.pythonhosted.org/packages/d7/18/61acfd5b414309d74ee838be321c636fe71815436f53c9f0334bf19064fa/cryptography-46.0.6-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:456b3215172aeefb9284550b162801d62f5f264a081049a3e94307fe20792cfa", size = 4878358, upload-time = "2026-03-25T23:34:27.67Z" },
|
|
322
|
+
{ url = "https://files.pythonhosted.org/packages/8b/65/5bf43286d566f8171917cae23ac6add941654ccf085d739195a4eacf1674/cryptography-46.0.6-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:341359d6c9e68834e204ceaf25936dffeafea3829ab80e9503860dcc4f4dac58", size = 4448061, upload-time = "2026-03-25T23:34:29.375Z" },
|
|
323
|
+
{ url = "https://files.pythonhosted.org/packages/e0/25/7e49c0fa7205cf3597e525d156a6bce5b5c9de1fd7e8cb01120e459f205a/cryptography-46.0.6-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9a9c42a2723999a710445bc0d974e345c32adfd8d2fac6d8a251fa829ad31cfb", size = 4399103, upload-time = "2026-03-25T23:34:32.036Z" },
|
|
324
|
+
{ url = "https://files.pythonhosted.org/packages/44/46/466269e833f1c4718d6cd496ffe20c56c9c8d013486ff66b4f69c302a68d/cryptography-46.0.6-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6617f67b1606dfd9fe4dbfa354a9508d4a6d37afe30306fe6c101b7ce3274b72", size = 4659255, upload-time = "2026-03-25T23:34:33.679Z" },
|
|
325
|
+
{ url = "https://files.pythonhosted.org/packages/0a/09/ddc5f630cc32287d2c953fc5d32705e63ec73e37308e5120955316f53827/cryptography-46.0.6-cp38-abi3-win32.whl", hash = "sha256:7f6690b6c55e9c5332c0b59b9c8a3fb232ebf059094c17f9019a51e9827df91c", size = 3010660, upload-time = "2026-03-25T23:34:35.418Z" },
|
|
326
|
+
{ url = "https://files.pythonhosted.org/packages/1b/82/ca4893968aeb2709aacfb57a30dec6fa2ab25b10fa9f064b8882ce33f599/cryptography-46.0.6-cp38-abi3-win_amd64.whl", hash = "sha256:79e865c642cfc5c0b3eb12af83c35c5aeff4fa5c672dc28c43721c2c9fdd2f0f", size = 3471160, upload-time = "2026-03-25T23:34:37.191Z" },
|
|
327
|
+
{ url = "https://files.pythonhosted.org/packages/2e/84/7ccff00ced5bac74b775ce0beb7d1be4e8637536b522b5df9b73ada42da2/cryptography-46.0.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:2ea0f37e9a9cf0df2952893ad145fd9627d326a59daec9b0802480fa3bcd2ead", size = 3475444, upload-time = "2026-03-25T23:34:38.944Z" },
|
|
328
|
+
{ url = "https://files.pythonhosted.org/packages/bc/1f/4c926f50df7749f000f20eede0c896769509895e2648db5da0ed55db711d/cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a3e84d5ec9ba01f8fd03802b2147ba77f0c8f2617b2aff254cedd551844209c8", size = 4218227, upload-time = "2026-03-25T23:34:40.871Z" },
|
|
329
|
+
{ url = "https://files.pythonhosted.org/packages/c6/65/707be3ffbd5f786028665c3223e86e11c4cda86023adbc56bd72b1b6bab5/cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:12f0fa16cc247b13c43d56d7b35287ff1569b5b1f4c5e87e92cc4fcc00cd10c0", size = 4381399, upload-time = "2026-03-25T23:34:42.609Z" },
|
|
330
|
+
{ url = "https://files.pythonhosted.org/packages/f3/6d/73557ed0ef7d73d04d9aba745d2c8e95218213687ee5e76b7d236a5030fc/cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:50575a76e2951fe7dbd1f56d181f8c5ceeeb075e9ff88e7ad997d2f42af06e7b", size = 4217595, upload-time = "2026-03-25T23:34:44.205Z" },
|
|
331
|
+
{ url = "https://files.pythonhosted.org/packages/9e/c5/e1594c4eec66a567c3ac4400008108a415808be2ce13dcb9a9045c92f1a0/cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:90e5f0a7b3be5f40c3a0a0eafb32c681d8d2c181fc2a1bdabe9b3f611d9f6b1a", size = 4380912, upload-time = "2026-03-25T23:34:46.328Z" },
|
|
332
|
+
{ url = "https://files.pythonhosted.org/packages/1a/89/843b53614b47f97fe1abc13f9a86efa5ec9e275292c457af1d4a60dc80e0/cryptography-46.0.6-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6728c49e3b2c180ef26f8e9f0a883a2c585638db64cf265b49c9ba10652d430e", size = 3409955, upload-time = "2026-03-25T23:34:48.465Z" },
|
|
333
333
|
]
|
|
334
334
|
|
|
335
335
|
[[package]]
|
|
@@ -697,6 +697,7 @@ dependencies = [
|
|
|
697
697
|
{ name = "uuid-utils" },
|
|
698
698
|
{ name = "uvicorn" },
|
|
699
699
|
{ name = "watchfiles" },
|
|
700
|
+
{ name = "zstandard" },
|
|
700
701
|
]
|
|
701
702
|
|
|
702
703
|
[package.dev-dependencies]
|
|
@@ -753,6 +754,7 @@ requires-dist = [
|
|
|
753
754
|
{ name = "uuid-utils", specifier = ">=0.12.0" },
|
|
754
755
|
{ name = "uvicorn", specifier = ">=0.26.0" },
|
|
755
756
|
{ name = "watchfiles", specifier = ">=0.13" },
|
|
757
|
+
{ name = "zstandard", specifier = ">=0.23.0" },
|
|
756
758
|
]
|
|
757
759
|
|
|
758
760
|
[package.metadata.requires-dev]
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import http from 'k6/http';
|
|
2
|
-
import { check } from 'k6';
|
|
3
|
-
import { Counter, Trend, Rate } from 'k6/metrics';
|
|
4
|
-
import exec from 'k6/execution';
|
|
5
|
-
|
|
6
|
-
// Custom metrics
|
|
7
|
-
const runDuration = new Trend('run_duration');
|
|
8
|
-
const successfulRuns = new Counter('successful_runs');
|
|
9
|
-
const failedRuns = new Counter('failed_runs');
|
|
10
|
-
const timeoutErrors = new Counter('timeout_errors');
|
|
11
|
-
const connectionErrors = new Counter('connection_errors');
|
|
12
|
-
const serverErrors = new Counter('server_errors');
|
|
13
|
-
const otherErrors = new Counter('other_errors');
|
|
14
|
-
const burstSuccessRate = new Rate('burst_success_rate');
|
|
15
|
-
|
|
16
|
-
// URL of your Agent Server
|
|
17
|
-
const BASE_URL = __ENV.BASE_URL || 'http://localhost:9123';
|
|
18
|
-
// LangSmith API key only needed with a custom server endpoint
|
|
19
|
-
const LANGSMITH_API_KEY = __ENV.LANGSMITH_API_KEY;
|
|
20
|
-
|
|
21
|
-
// Params for the runner
|
|
22
|
-
const BURST_SIZE = parseInt(__ENV.BURST_SIZE || '100');
|
|
23
|
-
|
|
24
|
-
// Params for the agent
|
|
25
|
-
const DATA_SIZE = parseInt(__ENV.DATA_SIZE || '1000');
|
|
26
|
-
const DELAY = parseInt(__ENV.DELAY || '0');
|
|
27
|
-
const EXPAND = parseInt(__ENV.EXPAND || '50');
|
|
28
|
-
const MODE = __ENV.MODE || 'single';
|
|
29
|
-
|
|
30
|
-
// Burst testing configuration
|
|
31
|
-
export let options = {
|
|
32
|
-
scenarios: {
|
|
33
|
-
burst_test: {
|
|
34
|
-
executor: 'shared-iterations', // All VUs share the total iterations
|
|
35
|
-
vus: BURST_SIZE, // Number of concurrent requests in the burst
|
|
36
|
-
iterations: BURST_SIZE, // Each VU does one request per burst
|
|
37
|
-
maxDuration: '10s', // Time limit for each burst
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
thresholds: {
|
|
41
|
-
'run_duration': ['p(95)<2000'],
|
|
42
|
-
'burst_success_rate': ['rate>=0.99'],
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
// Main test function - executes during the burst
|
|
47
|
-
export default function() {
|
|
48
|
-
const startTime = new Date().getTime();
|
|
49
|
-
|
|
50
|
-
// Create a unique identifier for each VU
|
|
51
|
-
const burstId = __ENV.BURST_ID || '1';
|
|
52
|
-
|
|
53
|
-
try {
|
|
54
|
-
// Log burst start
|
|
55
|
-
console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} starting request`);
|
|
56
|
-
|
|
57
|
-
// Prepare the request payload
|
|
58
|
-
const headers = { 'Content-Type': 'application/json' };
|
|
59
|
-
if (LANGSMITH_API_KEY) {
|
|
60
|
-
headers['x-api-key'] = LANGSMITH_API_KEY;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Create a payload with the LangGraph agent configuration
|
|
64
|
-
const payload = JSON.stringify({
|
|
65
|
-
assistant_id: "benchmark",
|
|
66
|
-
input: {
|
|
67
|
-
data_size: DATA_SIZE,
|
|
68
|
-
delay: DELAY,
|
|
69
|
-
expand: EXPAND,
|
|
70
|
-
mode: MODE,
|
|
71
|
-
},
|
|
72
|
-
config: {
|
|
73
|
-
recursion_limit: EXPAND + 2,
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
// Make a single request to the wait endpoint
|
|
78
|
-
const response = http.post(`${BASE_URL}/runs/wait`, payload, {
|
|
79
|
-
headers,
|
|
80
|
-
timeout: '35s'
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
// Don't include verification in the duration of the request
|
|
84
|
-
const duration = new Date().getTime() - startTime;
|
|
85
|
-
|
|
86
|
-
// Check the response
|
|
87
|
-
const expected_length = MODE === 'single' ? 1 : EXPAND + 1;
|
|
88
|
-
const success = check(response, {
|
|
89
|
-
'Run completed successfully': (r) => r.status === 200,
|
|
90
|
-
'Response contains expected number of messages': (r) => JSON.parse(r.body).messages.length === expected_length,
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
if (success) {
|
|
94
|
-
// Record success metrics
|
|
95
|
-
runDuration.add(duration);
|
|
96
|
-
successfulRuns.add(1);
|
|
97
|
-
burstSuccessRate.add(1); // 1 = success
|
|
98
|
-
|
|
99
|
-
// Optional: Log successful run details
|
|
100
|
-
console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} completed in ${duration/1000}s`);
|
|
101
|
-
} else {
|
|
102
|
-
// Handle failure
|
|
103
|
-
failedRuns.add(1);
|
|
104
|
-
burstSuccessRate.add(0); // 0 = failure
|
|
105
|
-
|
|
106
|
-
// Classify error based on status code or response
|
|
107
|
-
if (response.status >= 500) {
|
|
108
|
-
serverErrors.add(1);
|
|
109
|
-
console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} server error: ${response.status}`);
|
|
110
|
-
} else if (response.status === 408 || response.error === 'timeout') {
|
|
111
|
-
timeoutErrors.add(1);
|
|
112
|
-
console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} timeout error: ${response.error}`);
|
|
113
|
-
} else {
|
|
114
|
-
otherErrors.add(1);
|
|
115
|
-
console.log(`response: ${JSON.stringify(response)}`);
|
|
116
|
-
console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} other error: Status ${response.status}, ${response.error}`);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
} catch (error) {
|
|
121
|
-
// Handle exceptions (network errors, etc.)
|
|
122
|
-
failedRuns.add(1);
|
|
123
|
-
burstSuccessRate.add(0); // 0 = failure
|
|
124
|
-
|
|
125
|
-
if (error.message.includes('timeout')) {
|
|
126
|
-
timeoutErrors.add(1);
|
|
127
|
-
console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} timeout error: ${error.message}`);
|
|
128
|
-
} else if (error.message.includes('connection') || error.message.includes('network')) {
|
|
129
|
-
connectionErrors.add(1);
|
|
130
|
-
console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} connection error: ${error.message}`);
|
|
131
|
-
} else {
|
|
132
|
-
otherErrors.add(1);
|
|
133
|
-
console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} unexpected error: ${error.message}`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Setup function
|
|
139
|
-
export function setup() {
|
|
140
|
-
console.log(`Starting burst benchmark`);
|
|
141
|
-
console.log(`Running on pod: ${__ENV.POD_NAME || 'local'}`);
|
|
142
|
-
console.log(`Running with the following burst config: burst size ${BURST_SIZE}`);
|
|
143
|
-
console.log(`Running with the following agent config: data size ${DATA_SIZE}, delay ${DELAY}, expand ${EXPAND}, mode ${MODE}`);
|
|
144
|
-
|
|
145
|
-
return { startTime: new Date().toISOString() };
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Handle summary
|
|
149
|
-
export function handleSummary(data) {
|
|
150
|
-
// Helper function to safely access nested properties
|
|
151
|
-
const safeGet = (obj, path, defaultValue) => {
|
|
152
|
-
try {
|
|
153
|
-
const parts = path.split('.');
|
|
154
|
-
let result = obj;
|
|
155
|
-
|
|
156
|
-
for (const part of parts) {
|
|
157
|
-
if (result === undefined || result === null) return defaultValue;
|
|
158
|
-
result = result[part];
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return result === undefined || result === null ? defaultValue : result;
|
|
162
|
-
} catch (e) {
|
|
163
|
-
return defaultValue;
|
|
164
|
-
}
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
// Calculate average burst success rate
|
|
168
|
-
const burstRate = safeGet(data, 'metrics.burst_success_rate.values.rate', 0) * 100;
|
|
169
|
-
|
|
170
|
-
// Create a condensed summary with key metrics
|
|
171
|
-
const summary = {
|
|
172
|
-
timestamp: new Date().toISOString(),
|
|
173
|
-
podName: __ENV.POD_NAME || 'local',
|
|
174
|
-
burstSettings: {
|
|
175
|
-
burstSize: BURST_SIZE,
|
|
176
|
-
},
|
|
177
|
-
metrics: {
|
|
178
|
-
totalRuns: safeGet(data, 'metrics.iterations.values.count', 0),
|
|
179
|
-
successfulRuns: safeGet(data, 'metrics.successful_runs.values.count', 0),
|
|
180
|
-
failedRuns: safeGet(data, 'metrics.failed_runs.values.count', 0),
|
|
181
|
-
burstSuccessRate: burstRate.toFixed(2) + '%',
|
|
182
|
-
avgDuration: safeGet(data, 'metrics.run_duration.values.avg', 0) / 1000,
|
|
183
|
-
p95Duration: safeGet(data, 'metrics.run_duration.values.p(95)', 0) / 1000,
|
|
184
|
-
errors: {
|
|
185
|
-
timeout: safeGet(data, 'metrics.timeout_errors.values.count', 0),
|
|
186
|
-
connection: safeGet(data, 'metrics.connection_errors.values.count', 0),
|
|
187
|
-
server: safeGet(data, 'metrics.server_errors.values.count', 0),
|
|
188
|
-
other: safeGet(data, 'metrics.other_errors.values.count', 0)
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
raw: {
|
|
192
|
-
http_reqs: safeGet(data, 'metrics.http_reqs.values.count', 0),
|
|
193
|
-
http_req_failed: safeGet(data, 'metrics.http_req_failed.values.rate', 0),
|
|
194
|
-
http_req_duration: {
|
|
195
|
-
avg: safeGet(data, 'metrics.http_req_duration.values.avg', 0),
|
|
196
|
-
min: safeGet(data, 'metrics.http_req_duration.values.min', 0),
|
|
197
|
-
med: safeGet(data, 'metrics.http_req_duration.values.med', 0),
|
|
198
|
-
max: safeGet(data, 'metrics.http_req_duration.values.max', 0),
|
|
199
|
-
p90: safeGet(data, 'metrics.http_req_duration.values.p(90)', 0),
|
|
200
|
-
p95: safeGet(data, 'metrics.http_req_duration.values.p(95)', 0),
|
|
201
|
-
p99: safeGet(data, 'metrics.http_req_duration.values.p(99)', 0)
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
// Print the summary as JSON to the logs
|
|
207
|
-
console.log(`====== BURST TEST SUMMARY ======`);
|
|
208
|
-
console.log(`SUMMARY_JSON_START ${JSON.stringify(summary)} SUMMARY_JSON_END`);
|
|
209
|
-
|
|
210
|
-
// Generate output files
|
|
211
|
-
const burstStr = `burst${BURST_SIZE}`;
|
|
212
|
-
const timestamp = new Date().toISOString().replace(/:/g, '-').replace(/\..+/, '');
|
|
213
|
-
|
|
214
|
-
return {
|
|
215
|
-
[`results_${burstStr}_${timestamp}.json`]: JSON.stringify(data, null, 2),
|
|
216
|
-
[`summary_${burstStr}_${timestamp}.json`]: JSON.stringify(summary, null, 2),
|
|
217
|
-
stdout: JSON.stringify(summary, null, 2) // Also print summary to console
|
|
218
|
-
};
|
|
219
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.7.90"
|