litellm-enterprise 0.1.28__tar.gz → 0.1.29__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.
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/PKG-INFO +5 -2
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/auth/route_checks.py +1 -1
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/hooks/managed_files.py +85 -2
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/vector_stores/endpoints.py +2 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/pyproject.toml +2 -2
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/LICENSE.md +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/README.md +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/__init__.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/callback_controls.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/example_logging_api.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/llama_guard.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/llm_guard.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/pagerduty/pagerduty.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secret_detection.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/__init__.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/adafruit.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/adobe.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/age_secret_key.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/airtable_api_key.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/algolia_api_key.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/alibaba.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/asana.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/atlassian_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/authress_access_key.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/beamer_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/bitbucket.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/bittrex.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/clojars_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/codecov_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/coinbase_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/confluent.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/contentful_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/databricks_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/datadog_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/defined_networking_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/digitalocean.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/discord.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/doppler_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/droneci_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/dropbox.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/duffel_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/dynatrace_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/easypost.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/etsy_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/facebook_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/fastly_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/finicity.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/finnhub_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/flickr_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/flutterwave.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/frameio_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/freshbooks_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/gcp_api_key.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/github_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/gitlab.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/gitter_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/gocardless_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/grafana.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/hashicorp_tf_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/heroku_api_key.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/hubspot_api_key.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/huggingface.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/intercom_api_key.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/jfrog.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/jwt.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/kraken_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/kucoin.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/launchdarkly_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/linear.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/linkedin.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/lob.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/mailgun.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/mapbox_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/mattermost_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/messagebird.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/microsoft_teams_webhook.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/netlify_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/new_relic.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/nytimes_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/okta_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/openai_api_key.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/planetscale.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/postman_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/prefect_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/pulumi_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/pypi_upload_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/rapidapi_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/readme_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/rubygems_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/scalingo_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/sendbird.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/sendgrid_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/sendinblue_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/sentry_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/shippo_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/shopify.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/slack.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/snyk_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/squarespace_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/sumologic.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/telegram_bot_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/travisci_access_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/twitch_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/twitter.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/typeform_api_token.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/vault.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/yandex.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/secrets_plugins/zendesk_secret_key.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/send_emails/base_email.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/send_emails/endpoints.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/send_emails/resend_email.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/send_emails/sendgrid_email.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/enterprise_callbacks/send_emails/smtp_email.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/integrations/custom_guardrail.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/litellm_core_utils/litellm_logging.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/__init__.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/audit_logging_endpoints.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/auth/__init__.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/auth/custom_sso_handler.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/auth/user_api_key_auth.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/common_utils/__init__.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/common_utils/check_batch_cost.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/common_utils/check_responses_cost.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/enterprise_routes.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/management_endpoints/__init__.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/management_endpoints/internal_user_endpoints.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/management_endpoints/key_management_endpoints.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/proxy_server.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/readme.md +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/utils.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/types/enterprise_callbacks/send_emails.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/types/proxy/audit_logging_endpoints.py +0 -0
- {litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/types/proxy/proxy_server.py +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: litellm-enterprise
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.29
|
|
4
4
|
Summary: Package for LiteLLM Enterprise features
|
|
5
|
+
License-File: LICENSE.md
|
|
5
6
|
Author: BerriAI
|
|
6
7
|
Requires-Python: >=3.8, !=2.7.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*, !=3.7.*
|
|
7
8
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -9,6 +10,8 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
9
10
|
Classifier: Programming Language :: Python :: 3.10
|
|
10
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
12
15
|
Project-URL: Documentation, https://docs.litellm.ai
|
|
13
16
|
Project-URL: Homepage, https://litellm.ai
|
|
14
17
|
Project-URL: Repository, https://github.com/BerriAI/litellm
|
|
@@ -36,7 +36,7 @@ class EnterpriseRouteChecks:
|
|
|
36
36
|
if not premium_user:
|
|
37
37
|
raise HTTPException(
|
|
38
38
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
39
|
-
detail=f"🚨🚨🚨 DISABLING
|
|
39
|
+
detail=f"🚨🚨🚨 DISABLING ADMIN ENDPOINTS is an Enterprise feature\n🚨 {CommonProxyErrors.not_premium_user.value}",
|
|
40
40
|
)
|
|
41
41
|
|
|
42
42
|
return get_secret_bool("DISABLE_ADMIN_ENDPOINTS") is True
|
|
@@ -244,6 +244,78 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints):
|
|
|
244
244
|
return managed_object.created_by == user_id
|
|
245
245
|
return True # don't raise error if managed object is not found
|
|
246
246
|
|
|
247
|
+
async def list_user_batches(
|
|
248
|
+
self,
|
|
249
|
+
user_api_key_dict: UserAPIKeyAuth,
|
|
250
|
+
limit: Optional[int] = None,
|
|
251
|
+
after: Optional[str] = None,
|
|
252
|
+
provider: Optional[str] = None,
|
|
253
|
+
target_model_names: Optional[str] = None,
|
|
254
|
+
llm_router: Optional[Router] = None,
|
|
255
|
+
) -> Dict[str, Any]:
|
|
256
|
+
# Provider filtering is not supported for managed batches
|
|
257
|
+
# This is because the encoded object ids stored in the managed objects table do not contain the provider information
|
|
258
|
+
# To support provider filtering, we would need to store the provider information in the encoded object ids
|
|
259
|
+
if provider:
|
|
260
|
+
raise Exception(
|
|
261
|
+
"Filtering by 'provider' is not supported when using managed batches."
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
# Model name filtering is not supported for managed batches
|
|
265
|
+
# This is because the encoded object ids stored in the managed objects table do not contain the model name
|
|
266
|
+
# A hash of the model name + litellm_params for the model name is encoded as the model id. This is not sufficient to reliably map the target model names to the model ids.
|
|
267
|
+
if target_model_names:
|
|
268
|
+
raise Exception(
|
|
269
|
+
"Filtering by 'target_model_names' is not supported when using managed batches."
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
where_clause: Dict[str, Any] = {"file_purpose": "batch"}
|
|
273
|
+
|
|
274
|
+
# Filter by user who created the batch
|
|
275
|
+
if user_api_key_dict.user_id:
|
|
276
|
+
where_clause["created_by"] = user_api_key_dict.user_id
|
|
277
|
+
|
|
278
|
+
if after:
|
|
279
|
+
where_clause["id"] = {"gt": after}
|
|
280
|
+
|
|
281
|
+
# Fetch more than needed to allow for post-fetch filtering
|
|
282
|
+
fetch_limit = limit or 20
|
|
283
|
+
if target_model_names:
|
|
284
|
+
# Fetch extra to account for filtering
|
|
285
|
+
fetch_limit = max(fetch_limit * 3, 100)
|
|
286
|
+
|
|
287
|
+
batches = await self.prisma_client.db.litellm_managedobjecttable.find_many(
|
|
288
|
+
where=where_clause,
|
|
289
|
+
take=fetch_limit,
|
|
290
|
+
order={"created_at": "desc"},
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
batch_objects: List[LiteLLMBatch] = []
|
|
294
|
+
for batch in batches:
|
|
295
|
+
try:
|
|
296
|
+
# Stop once we have enough after filtering
|
|
297
|
+
if len(batch_objects) >= (limit or 20):
|
|
298
|
+
break
|
|
299
|
+
|
|
300
|
+
batch_data = json.loads(batch.file_object) if isinstance(batch.file_object, str) else batch.file_object
|
|
301
|
+
batch_obj = LiteLLMBatch(**batch_data)
|
|
302
|
+
batch_obj.id = batch.unified_object_id
|
|
303
|
+
batch_objects.append(batch_obj)
|
|
304
|
+
|
|
305
|
+
except Exception as e:
|
|
306
|
+
verbose_logger.warning(
|
|
307
|
+
f"Failed to parse batch object {batch.unified_object_id}: {e}"
|
|
308
|
+
)
|
|
309
|
+
continue
|
|
310
|
+
|
|
311
|
+
return {
|
|
312
|
+
"object": "list",
|
|
313
|
+
"data": batch_objects,
|
|
314
|
+
"first_id": batch_objects[0].id if batch_objects else None,
|
|
315
|
+
"last_id": batch_objects[-1].id if batch_objects else None,
|
|
316
|
+
"has_more": len(batch_objects) == (limit or 20),
|
|
317
|
+
}
|
|
318
|
+
|
|
247
319
|
async def get_user_created_file_ids(
|
|
248
320
|
self, user_api_key_dict: UserAPIKeyAuth, model_object_ids: List[str]
|
|
249
321
|
) -> List[OpenAIFileObject]:
|
|
@@ -297,6 +369,8 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints):
|
|
|
297
369
|
if (
|
|
298
370
|
call_type == CallTypes.afile_content.value
|
|
299
371
|
or call_type == CallTypes.afile_delete.value
|
|
372
|
+
or call_type == CallTypes.afile_retrieve.value
|
|
373
|
+
or call_type == CallTypes.afile_content.value
|
|
300
374
|
):
|
|
301
375
|
await self.check_managed_file_id_access(data, user_api_key_dict)
|
|
302
376
|
|
|
@@ -361,12 +435,16 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints):
|
|
|
361
435
|
data["model_file_id_mapping"] = model_file_id_mapping
|
|
362
436
|
elif (
|
|
363
437
|
call_type == CallTypes.aretrieve_batch.value
|
|
438
|
+
or call_type == CallTypes.acancel_batch.value
|
|
364
439
|
or call_type == CallTypes.acancel_fine_tuning_job.value
|
|
365
440
|
or call_type == CallTypes.aretrieve_fine_tuning_job.value
|
|
366
441
|
):
|
|
367
442
|
accessor_key: Optional[str] = None
|
|
368
443
|
retrieve_object_id: Optional[str] = None
|
|
369
|
-
if
|
|
444
|
+
if (
|
|
445
|
+
call_type == CallTypes.aretrieve_batch.value
|
|
446
|
+
or call_type == CallTypes.acancel_batch.value
|
|
447
|
+
):
|
|
370
448
|
accessor_key = "batch_id"
|
|
371
449
|
elif (
|
|
372
450
|
call_type == CallTypes.acancel_fine_tuning_job.value
|
|
@@ -382,6 +460,8 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints):
|
|
|
382
460
|
if retrieve_object_id
|
|
383
461
|
else False
|
|
384
462
|
)
|
|
463
|
+
print(f"🔥potential_llm_object_id: {potential_llm_object_id}")
|
|
464
|
+
print(f"🔥retrieve_object_id: {retrieve_object_id}")
|
|
385
465
|
if potential_llm_object_id and retrieve_object_id:
|
|
386
466
|
## VALIDATE USER HAS ACCESS TO THE OBJECT ##
|
|
387
467
|
if not await self.can_user_call_unified_object_id(
|
|
@@ -673,6 +753,7 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints):
|
|
|
673
753
|
bytes=file_objects[0].bytes,
|
|
674
754
|
filename=file_objects[0].filename,
|
|
675
755
|
status="uploaded",
|
|
756
|
+
expires_at=file_objects[0].expires_at,
|
|
676
757
|
)
|
|
677
758
|
|
|
678
759
|
return response
|
|
@@ -893,8 +974,10 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints):
|
|
|
893
974
|
delete_response = None
|
|
894
975
|
specific_model_file_id_mapping = model_file_id_mapping.get(file_id)
|
|
895
976
|
if specific_model_file_id_mapping:
|
|
977
|
+
# Remove conflicting keys from data to avoid duplicate keyword arguments
|
|
978
|
+
filtered_data = {k: v for k, v in data.items() if k not in ("model", "file_id")}
|
|
896
979
|
for model_id, model_file_id in specific_model_file_id_mapping.items():
|
|
897
|
-
delete_response = await llm_router.afile_delete(model=model_id, file_id=model_file_id, **
|
|
980
|
+
delete_response = await llm_router.afile_delete(model=model_id, file_id=model_file_id, **filtered_data) # type: ignore
|
|
898
981
|
|
|
899
982
|
stored_file_object = await self.delete_unified_file_id(
|
|
900
983
|
file_id, litellm_parent_otel_span
|
|
@@ -282,6 +282,8 @@ async def get_vector_store_info(
|
|
|
282
282
|
updated_at=vector_store.get("updated_at") or None,
|
|
283
283
|
litellm_credential_name=vector_store.get("litellm_credential_name"),
|
|
284
284
|
litellm_params=vector_store.get("litellm_params") or None,
|
|
285
|
+
team_id=vector_store.get("team_id"),
|
|
286
|
+
user_id=vector_store.get("user_id"),
|
|
285
287
|
)
|
|
286
288
|
return {"vector_store": vector_store_pydantic_obj}
|
|
287
289
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "litellm-enterprise"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.29"
|
|
4
4
|
description = "Package for LiteLLM Enterprise features"
|
|
5
5
|
authors = ["BerriAI"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -22,7 +22,7 @@ requires = ["poetry-core"]
|
|
|
22
22
|
build-backend = "poetry.core.masonry.api"
|
|
23
23
|
|
|
24
24
|
[tool.commitizen]
|
|
25
|
-
version = "0.1.
|
|
25
|
+
version = "0.1.29"
|
|
26
26
|
version_files = [
|
|
27
27
|
"pyproject.toml:version",
|
|
28
28
|
"../requirements.txt:litellm-enterprise==",
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/auth/__init__.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
|
{litellm_enterprise-0.1.28 → litellm_enterprise-0.1.29}/litellm_enterprise/proxy/proxy_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|