beamlit 0.0.31rc38__tar.gz → 0.0.31rc40__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/PKG-INFO +1 -1
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/pyproject.toml +1 -1
- beamlit-0.0.31rc40/src/beamlit/common/instrumentation.py +123 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/common/settings.py +1 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/serve/app.py +8 -7
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/.beamlit/agents/agent-custom/agent.yaml +2 -2
- beamlit-0.0.31rc40/src/integrationtest/.beamlit/agents/agent-custom/destination.txt +1 -0
- beamlit-0.0.31rc40/src/integrationtest/.beamlit/functions/helloworld/Dockerfile +23 -0
- beamlit-0.0.31rc40/src/integrationtest/.beamlit/functions/helloworld/destination.txt +1 -0
- beamlit-0.0.31rc40/src/integrationtest/.beamlit/functions/helloworld/function.yaml +19 -0
- beamlit-0.0.31rc38/src/beamlit/common/instrumentation.py +0 -101
- beamlit-0.0.31rc38/src/integrationtest/.beamlit/agents/agent-custom/destination.txt +0 -1
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/.gitignore +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/README.md +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/beamlit.yaml +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/agents/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/agents/chain.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/agents/chat.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/agents/decorator.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/create_agent.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/create_agent_release.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/delete_agent.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/delete_agent_history.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/get_agent.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/get_agent_environment_logs.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/get_agent_history.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/get_agent_metrics.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/get_agent_trace_ids.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/list_agent_history.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/list_agents.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/put_agent_history.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/update_agent.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/configurations/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/configurations/get_configuration.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/default/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/default/get_trace.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/default/get_trace_ids.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/default/get_trace_logs.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/create_environment.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/delete_environment.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/get_environment.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/get_environment_metrics.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/list_environments.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/update_environment.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/create_function.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/create_function_release.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/delete_function.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/get_function.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/get_function_environment_logs.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/get_function_metrics.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/get_function_trace_ids.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/list_functions.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/update_function.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/history/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/history/get_agents_history.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/history/list_agents_history.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/create_integration_connection.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/delete_integration_connection.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/get_integration.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/get_integration_connection.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/get_integration_connection_model.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/get_integration_model.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/list_integration_connection_models.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/list_integration_connections.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/list_integration_models.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/update_integration_connection.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/invitations/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/invitations/list_all_pending_invitations.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/locations/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/locations/list_locations.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/metrics/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/metrics/get_metrics.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/create_model_provider.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/delete_model_provider.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/get_model_provider.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/list_model_providers.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/update_model_provider.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/create_model.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/delete_model.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/get_model.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/get_model_environment_logs.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/get_model_metrics.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/get_model_trace_ids.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/list_models.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/release_model.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/update_model.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/policies/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/policies/create_policy.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/policies/delete_policy.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/policies/get_policy.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/policies/list_policies.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/policies/update_policy.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/create_private_cluster.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/delete_private_cluster.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/get_private_cluster.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/get_private_cluster_health.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/list_private_clusters.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/update_private_cluster.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/update_private_cluster_health.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/service_accounts/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/service_accounts/create_api_key_for_service_account.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/service_accounts/create_workspace_service_account.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/service_accounts/delete_api_key_for_service_account.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/service_accounts/delete_workspace_service_account.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/service_accounts/get_workspace_service_accounts.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/service_accounts/list_api_keys_for_service_account.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/service_accounts/update_workspace_service_account.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/store/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/store/get_store_agent.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/store/get_store_function.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/store/list_store_agents.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/store/list_store_functions.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/accept_workspace_invitation.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/create_worspace.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/decline_workspace_invitation.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/delete_workspace.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/get_workspace.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/invite_workspace_user.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/leave_workspace.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/list_workspace_users.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/list_workspaces.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/remove_workspace_user.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/update_workspace.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/workspaces/update_workspace_user_role.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/authentication/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/authentication/apikey.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/authentication/authentication.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/authentication/clientcredentials.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/authentication/credentials.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/authentication/device_mode.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/client.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/common/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/common/error.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/common/generate.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/common/logger.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/common/secrets.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/common/utils.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/deploy/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/deploy/deploy.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/deploy/format.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/deploy/parser.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/errors.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/decorator.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/github/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/github/github.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/github/kit/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/github/kit/pull_request.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/math/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/math/math.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/mcp/mcp.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/remote/remote.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/search/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/functions/search/search.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/acl.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/agent.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/agent_chain.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/agent_history.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/agent_history_event.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/agent_metadata.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/agent_release.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/agent_spec.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/api_key.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/configuration.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/continent.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/core_spec.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/core_spec_configurations.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/core_status.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/country.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/create_api_key_for_service_account_body.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/create_workspace_service_account_body.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/create_workspace_service_account_response_200.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/delete_workspace_service_account_response_200.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/environment.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/environment_metadata.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/environment_metrics.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/environment_spec.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/flavor.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/function.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/function_kit.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/function_metadata.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/function_release.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/function_spec.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/get_trace_ids_response_200.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/get_trace_logs_response_200.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/get_trace_response_200.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/get_workspace_service_accounts_response_200_item.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/increase_and_rate_metric.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/integration_config.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/integration_connection.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/integration_connection_config.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/integration_connection_secret.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/integration_connection_spec.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/integration_model.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/invite_workspace_user_body.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/location_response.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/metadata.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/metadata_labels.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/metric.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/metrics.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/model.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/model_metadata.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/model_private_cluster.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/model_provider.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/model_release.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/model_spec.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/owner_fields.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/pending_invitation.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/pending_invitation_accept.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/pending_invitation_render.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/pending_invitation_render_invited_by.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/pending_invitation_render_workspace.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/pending_invitation_workspace_details.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/pod_template_spec.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/policy.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/policy_location.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/policy_spec.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/private_cluster.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/private_location.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/provider_config.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/qps.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/resource_deployment_metrics.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/resource_deployment_metrics_inference_per_second_per_region.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/resource_deployment_metrics_query_per_second_per_region_per_code.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/resource_environment_metrics.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/resource_environment_metrics_inference_per_region.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/resource_environment_metrics_inference_per_second_per_region.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/resource_environment_metrics_query_per_region_per_code.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/resource_environment_metrics_query_per_second_per_region_per_code.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/resource_log.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/resource_metrics.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/runtime.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/runtime_readiness_probe.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/runtime_resources.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/serverless_config.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/spec_configuration.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/store_agent.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/store_agent_labels.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/store_configuration.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/store_configuration_option.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/store_function.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/store_function_kit.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/store_function_labels.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/store_function_parameter.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/time_fields.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/trace_ids_response.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/update_workspace_service_account_body.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/update_workspace_service_account_response_200.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/update_workspace_user_role_body.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/websocket_channel.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/workspace.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/workspace_labels.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/models/workspace_user.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/py.typed +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/run.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/serve/middlewares/__init__.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/serve/middlewares/accesslog.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/serve/middlewares/processtime.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/types.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/.beamlit/agents/agent-custom/Dockerfile +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/.beamlit/functions/helloworld_2/Dockerfile +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/.beamlit/functions/helloworld_2/destination.txt +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/.beamlit/functions/helloworld_2/function.yaml +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/agent.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/beamlit.yaml +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/functions/helloworld.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/main.py +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/pyproject.toml +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/integrationtest/uv.lock +0 -0
- {beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/uv.lock +0 -0
@@ -0,0 +1,123 @@
|
|
1
|
+
from typing import Any
|
2
|
+
|
3
|
+
from fastapi import FastAPI
|
4
|
+
from opentelemetry import metrics, trace
|
5
|
+
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import (
|
6
|
+
OTLPMetricExporter,
|
7
|
+
)
|
8
|
+
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import (
|
9
|
+
OTLPSpanExporter,
|
10
|
+
)
|
11
|
+
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
|
12
|
+
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
|
13
|
+
from opentelemetry.instrumentation.logging import LoggingInstrumentor
|
14
|
+
from opentelemetry.metrics import NoOpMeterProvider
|
15
|
+
from opentelemetry.sdk.metrics import MeterProvider
|
16
|
+
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
|
17
|
+
from opentelemetry.sdk.resources import Resource
|
18
|
+
from opentelemetry.sdk.trace import TracerProvider
|
19
|
+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
20
|
+
from opentelemetry.trace import NoOpTracerProvider
|
21
|
+
from typing_extensions import Dict
|
22
|
+
|
23
|
+
from .settings import get_settings
|
24
|
+
|
25
|
+
tracer: trace.Tracer | None = None
|
26
|
+
meter: metrics.Meter | None = None
|
27
|
+
|
28
|
+
|
29
|
+
def get_tracer() -> trace.Tracer:
|
30
|
+
if tracer is None:
|
31
|
+
raise Exception("Tracer is not initialized")
|
32
|
+
return tracer
|
33
|
+
|
34
|
+
|
35
|
+
def get_meter() -> metrics.Meter:
|
36
|
+
if meter is None:
|
37
|
+
raise Exception("Meter is not initialized")
|
38
|
+
return meter
|
39
|
+
|
40
|
+
|
41
|
+
def get_resource_attributes() -> Dict[str, Any]:
|
42
|
+
resources = Resource.create()
|
43
|
+
resources_dict: Dict[str, Any] = {}
|
44
|
+
for key in resources.attributes:
|
45
|
+
resources_dict[key] = resources.attributes[key]
|
46
|
+
settings = get_settings()
|
47
|
+
if settings is None:
|
48
|
+
raise Exception("Settings are not initialized")
|
49
|
+
resources_dict["workspace"] = settings.workspace
|
50
|
+
resources_dict["service.name"] = settings.name
|
51
|
+
return resources_dict
|
52
|
+
|
53
|
+
|
54
|
+
def get_metrics_exporter() -> OTLPMetricExporter | None:
|
55
|
+
settings = get_settings()
|
56
|
+
if settings is None:
|
57
|
+
raise Exception("Settings are not initialized")
|
58
|
+
if not settings.enable_opentelemetry:
|
59
|
+
# Return None or a NoOpExporter equivalent
|
60
|
+
return None
|
61
|
+
return OTLPMetricExporter()
|
62
|
+
|
63
|
+
|
64
|
+
def get_span_exporter() -> OTLPSpanExporter | None:
|
65
|
+
settings = get_settings()
|
66
|
+
if not settings.enable_opentelemetry:
|
67
|
+
return None
|
68
|
+
return OTLPSpanExporter()
|
69
|
+
|
70
|
+
|
71
|
+
def instrument_app(app: FastAPI):
|
72
|
+
global tracer
|
73
|
+
global meter
|
74
|
+
settings = get_settings()
|
75
|
+
if settings is None:
|
76
|
+
raise Exception("Settings are not initialized")
|
77
|
+
|
78
|
+
if not settings.enable_opentelemetry:
|
79
|
+
# Use NoOp implementations to stub tracing and metrics
|
80
|
+
trace.set_tracer_provider(NoOpTracerProvider())
|
81
|
+
tracer = trace.get_tracer(__name__)
|
82
|
+
|
83
|
+
metrics.set_meter_provider(NoOpMeterProvider())
|
84
|
+
meter = metrics.get_meter(__name__)
|
85
|
+
return
|
86
|
+
|
87
|
+
resource = Resource.create(
|
88
|
+
{
|
89
|
+
"service.name": settings.name,
|
90
|
+
"service.namespace": settings.workspace,
|
91
|
+
"service.workspace": settings.workspace,
|
92
|
+
}
|
93
|
+
)
|
94
|
+
|
95
|
+
# Set up the TracerProvider if not already set
|
96
|
+
if not isinstance(trace.get_tracer_provider(), TracerProvider):
|
97
|
+
trace_provider = TracerProvider(resource=resource)
|
98
|
+
span_processor = BatchSpanProcessor(get_span_exporter())
|
99
|
+
trace_provider.add_span_processor(span_processor)
|
100
|
+
trace.set_tracer_provider(trace_provider)
|
101
|
+
tracer = trace_provider.get_tracer(__name__)
|
102
|
+
else:
|
103
|
+
tracer = trace.get_tracer(__name__)
|
104
|
+
|
105
|
+
# Set up the MeterProvider if not already set
|
106
|
+
if not isinstance(metrics.get_meter_provider(), MeterProvider):
|
107
|
+
metrics_exporter = PeriodicExportingMetricReader(get_metrics_exporter())
|
108
|
+
meter_provider = MeterProvider(
|
109
|
+
resource=resource, metric_readers=[metrics_exporter]
|
110
|
+
)
|
111
|
+
metrics.set_meter_provider(meter_provider)
|
112
|
+
meter = meter_provider.get_meter(__name__)
|
113
|
+
else:
|
114
|
+
meter = metrics.get_meter(__name__)
|
115
|
+
|
116
|
+
# Only instrument the app when OpenTelemetry is enabled
|
117
|
+
FastAPIInstrumentor.instrument_app(
|
118
|
+
app=app, tracer_provider=trace.get_tracer_provider(), meter_provider=metrics.get_meter_provider()
|
119
|
+
)
|
120
|
+
HTTPXClientInstrumentor().instrument(meter_provider=metrics.get_meter_provider())
|
121
|
+
LoggingInstrumentor(tracer_provider=trace.get_tracer_provider()).instrument(
|
122
|
+
set_logging_format=True
|
123
|
+
)
|
@@ -67,6 +67,7 @@ class Settings(BaseSettings):
|
|
67
67
|
mcp_hub_url: str = Field(default="https://mcp-hub-server.beamlit.workers.com")
|
68
68
|
registry_url: str = Field(default="https://us.registry.beamlit.com")
|
69
69
|
log_level: str = Field(default="INFO")
|
70
|
+
enable_opentelemetry: bool = Field(default=False)
|
70
71
|
agent: SettingsAgent = SettingsAgent()
|
71
72
|
server: SettingsServer = SettingsServer()
|
72
73
|
authentication: SettingsAuthentication = SettingsAuthentication()
|
@@ -41,13 +41,14 @@ logger.info(
|
|
41
41
|
f" on {settings.server.host}:{settings.server.port}"
|
42
42
|
)
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
)
|
44
|
+
if settings.enable_opentelemetry:
|
45
|
+
Traceloop.init(
|
46
|
+
app_name=settings.name,
|
47
|
+
exporter=get_span_exporter(),
|
48
|
+
metrics_exporter=get_metrics_exporter(),
|
49
|
+
resource_attributes=get_resource_attributes(),
|
50
|
+
should_enrich_metrics=os.getenv("ENRICHED_METRICS", "false") == "true",
|
51
|
+
)
|
51
52
|
|
52
53
|
app = FastAPI(docs_url=None, redoc_url=None)
|
53
54
|
app.add_middleware(
|
@@ -9,10 +9,10 @@ metadata:
|
|
9
9
|
spec:
|
10
10
|
enabled: true
|
11
11
|
policies: []
|
12
|
-
functions: [
|
12
|
+
functions: [helloworld]
|
13
13
|
agentChain: []
|
14
14
|
model: gpt-4o-mini
|
15
15
|
runtime:
|
16
|
-
image: us.registry.beamlit.com/main/agents/agent-custom
|
16
|
+
image: us.registry.beamlit.com/main/agents/agent-custom:9280b44d
|
17
17
|
description: |
|
18
18
|
A chat agent using Beamlit to handle your tasks.
|
@@ -0,0 +1 @@
|
|
1
|
+
us.registry.beamlit.com/main/agents/agent-custom:9280b44d
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
FROM python:3.12-slim
|
3
|
+
|
4
|
+
ARG UV_VERSION="latest"
|
5
|
+
RUN apt update && apt install -y curl
|
6
|
+
|
7
|
+
# Install uv.
|
8
|
+
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
9
|
+
RUN curl -fsSL https://raw.githubusercontent.com/beamlit/toolkit/main/install.sh | BINDIR=/bin sh
|
10
|
+
WORKDIR /beamlit
|
11
|
+
|
12
|
+
# Install the application dependencies.
|
13
|
+
COPY pyproject.toml /beamlit/pyproject.toml
|
14
|
+
COPY uv.lock /beamlit/uv.lock
|
15
|
+
RUN uv sync --no-cache
|
16
|
+
|
17
|
+
COPY README.m[d] /beamlit/README.md
|
18
|
+
COPY LICENS[E] /beamlit/LICENSE
|
19
|
+
COPY . /beamlit/src
|
20
|
+
|
21
|
+
ENV PATH="/beamlit/.venv/bin:$PATH"
|
22
|
+
|
23
|
+
ENTRYPOINT ["bl","serve","--port","80","--module","functions.helloworld.helloworld"]
|
@@ -0,0 +1 @@
|
|
1
|
+
us.registry.beamlit.com/main/functions/helloworld:109b61a4
|
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
apiVersion: beamlit.com/v1alpha1
|
3
|
+
kind: Function
|
4
|
+
metadata:
|
5
|
+
name: helloworld
|
6
|
+
displayName: helloworld
|
7
|
+
environment: production
|
8
|
+
spec:
|
9
|
+
enabled: true
|
10
|
+
policies: []
|
11
|
+
description: |
|
12
|
+
A function for saying hello to the world.
|
13
|
+
parameters:
|
14
|
+
- name: query
|
15
|
+
type: string
|
16
|
+
required: true
|
17
|
+
description: Parameter query
|
18
|
+
runtime:
|
19
|
+
image: us.registry.beamlit.com/main/functions/helloworld:109b61a4
|
@@ -1,101 +0,0 @@
|
|
1
|
-
from typing import Any
|
2
|
-
|
3
|
-
from fastapi import FastAPI
|
4
|
-
from opentelemetry import metrics, trace
|
5
|
-
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import (
|
6
|
-
OTLPMetricExporter,
|
7
|
-
)
|
8
|
-
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import (
|
9
|
-
OTLPSpanExporter,
|
10
|
-
)
|
11
|
-
from opentelemetry.instrumentation.fastapi import ( # type: ignore
|
12
|
-
FastAPIInstrumentor,
|
13
|
-
)
|
14
|
-
from opentelemetry.instrumentation.httpx import ( # type: ignore
|
15
|
-
HTTPXClientInstrumentor,
|
16
|
-
)
|
17
|
-
from opentelemetry.instrumentation.logging import ( # type: ignore
|
18
|
-
LoggingInstrumentor,
|
19
|
-
)
|
20
|
-
from opentelemetry.sdk.metrics import MeterProvider
|
21
|
-
from opentelemetry.sdk.metrics.export import (
|
22
|
-
PeriodicExportingMetricReader,
|
23
|
-
)
|
24
|
-
from opentelemetry.sdk.resources import Resource
|
25
|
-
from opentelemetry.sdk.trace import TracerProvider
|
26
|
-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
27
|
-
from typing_extensions import Dict
|
28
|
-
|
29
|
-
from .settings import get_settings
|
30
|
-
|
31
|
-
tracer: trace.Tracer | None = None
|
32
|
-
meter: metrics.Meter | None = None
|
33
|
-
|
34
|
-
|
35
|
-
def get_tracer() -> trace.Tracer:
|
36
|
-
if tracer is None:
|
37
|
-
raise Exception("Tracer is not initialized")
|
38
|
-
return tracer
|
39
|
-
|
40
|
-
|
41
|
-
def get_meter() -> metrics.Meter:
|
42
|
-
if meter is None:
|
43
|
-
raise Exception("Meter is not initialized")
|
44
|
-
return meter
|
45
|
-
|
46
|
-
|
47
|
-
def get_resource_attributes() -> Dict[str, Any]:
|
48
|
-
resources = Resource.create()
|
49
|
-
resources_dict: Dict[str, Any] = {}
|
50
|
-
for key in resources.attributes:
|
51
|
-
resources_dict[key] = resources.attributes[key]
|
52
|
-
settings = get_settings()
|
53
|
-
if settings is None:
|
54
|
-
raise Exception("Settings are not initialized")
|
55
|
-
resources_dict["workspace"] = settings.workspace
|
56
|
-
resources_dict["service.name"] = settings.name
|
57
|
-
return resources_dict
|
58
|
-
|
59
|
-
|
60
|
-
def get_metrics_exporter() -> OTLPMetricExporter:
|
61
|
-
return OTLPMetricExporter()
|
62
|
-
|
63
|
-
|
64
|
-
def get_span_exporter() -> OTLPSpanExporter:
|
65
|
-
return OTLPSpanExporter()
|
66
|
-
|
67
|
-
|
68
|
-
def instrument_app(app: FastAPI):
|
69
|
-
global tracer
|
70
|
-
global meter
|
71
|
-
settings = get_settings()
|
72
|
-
if settings is None:
|
73
|
-
raise Exception("Settings are not initialized")
|
74
|
-
resource = Resource.create(
|
75
|
-
{
|
76
|
-
"service.name": settings.name,
|
77
|
-
"service.namespace": settings.workspace,
|
78
|
-
"service.workspace": settings.workspace,
|
79
|
-
}
|
80
|
-
)
|
81
|
-
# Set up the TracerProvider
|
82
|
-
trace_provider = TracerProvider(resource=resource)
|
83
|
-
span_processor = BatchSpanProcessor(get_span_exporter())
|
84
|
-
trace_provider.add_span_processor(span_processor)
|
85
|
-
trace.set_tracer_provider(trace_provider)
|
86
|
-
tracer = trace_provider.get_tracer(__name__)
|
87
|
-
|
88
|
-
metrics_exporter = PeriodicExportingMetricReader(get_metrics_exporter())
|
89
|
-
meter_provider = MeterProvider(
|
90
|
-
resource=resource, metric_readers=[metrics_exporter]
|
91
|
-
)
|
92
|
-
metrics.set_meter_provider(meter_provider)
|
93
|
-
meter = meter_provider.get_meter(__name__)
|
94
|
-
|
95
|
-
FastAPIInstrumentor.instrument_app( # type: ignore
|
96
|
-
app=app, tracer_provider=trace_provider, meter_provider=meter_provider
|
97
|
-
)
|
98
|
-
HTTPXClientInstrumentor().instrument(meter_provider=meter_provider) # type: ignore
|
99
|
-
LoggingInstrumentor(tracer_provider=trace_provider).instrument(
|
100
|
-
set_logging_format=True
|
101
|
-
)
|
@@ -1 +0,0 @@
|
|
1
|
-
us.registry.beamlit.com/main/agents/agent-custom
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/agents/get_agent_environment_logs.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/configurations/get_configuration.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/create_environment.py
RENAMED
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/delete_environment.py
RENAMED
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/get_environment_metrics.py
RENAMED
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/environments/update_environment.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/create_function_release.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/get_function_environment_logs.py
RENAMED
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/functions/get_function_trace_ids.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/get_integration_connection.py
RENAMED
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/get_integration_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/integrations/list_integration_models.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/create_model_provider.py
RENAMED
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/delete_model_provider.py
RENAMED
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/get_model_provider.py
RENAMED
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/list_model_providers.py
RENAMED
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/model_providers/update_model_provider.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/models/get_model_environment_logs.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/create_private_cluster.py
RENAMED
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/delete_private_cluster.py
RENAMED
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/get_private_cluster.py
RENAMED
File without changes
|
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/list_private_clusters.py
RENAMED
File without changes
|
{beamlit-0.0.31rc38 → beamlit-0.0.31rc40}/src/beamlit/api/privateclusters/update_private_cluster.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|