django-cfg 1.1.78__tar.gz → 1.1.80__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.
- {django_cfg-1.1.78 → django_cfg-1.1.80}/PKG-INFO +2 -2
- {django_cfg-1.1.78 → django_cfg-1.1.80}/pyproject.toml +2 -2
- {django_cfg-1.1.78 → django_cfg-1.1.80}/requirements-dev.txt +1 -1
- {django_cfg-1.1.78 → django_cfg-1.1.80}/requirements-test.txt +1 -1
- {django_cfg-1.1.78 → django_cfg-1.1.80}/requirements.txt +1 -1
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/__init__.py +1 -1
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/drf.py +36 -3
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/llm/client.py +29 -18
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/llm/models.py +16 -1
- {django_cfg-1.1.78 → django_cfg-1.1.80}/.gitignore +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/LICENSE +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/MANIFEST.in +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/activity.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/filters.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/group.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/inlines.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/otp.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/registration_source.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/resources.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/twilio_response.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/user.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/apps.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/management/commands/test_otp.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/managers/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/managers/user_manager.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/migrations/0001_initial.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/migrations/0002_add_phone_otp_clean.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/migrations/0003_twilioresponse.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/migrations/0004_delete_twilioresponse.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/migrations/0005_twilioresponse.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/migrations/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/models.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/serializers/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/serializers/otp.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/serializers/profile.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/serializers/webhook.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/services/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/services/activity_service.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/services/otp_service.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/signals.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/templates/emails/base_email.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/templates/emails/base_email.txt +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/templates/emails/otp_email.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/templates/emails/otp_email.txt +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/templates/emails/welcome_email.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/templates/emails/welcome_email.txt +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/urls.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/utils/notifications.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/views/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/views/otp.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/views/profile.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/views/webhook.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/api/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/api/commands/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/api/commands/urls.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/api/commands/views.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/api/health/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/api/health/urls.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/api/health/views.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/admin/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/admin/leads_admin.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/admin/resources.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/apps.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/migrations/0001_initial.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/migrations/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/models.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/serializers.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/signals.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/tests.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/urls.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/views.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/admin/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/admin/filters.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/admin/newsletter_admin.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/admin/resources.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/apps.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/management/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/management/commands/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/management/commands/test_newsletter.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/managers/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/managers/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/migrations/0001_initial.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/migrations/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/models.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/serializers.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/services/email_service.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/signals.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/urls.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/utils/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/views/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/views/campaigns.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/views/emails.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/views/newsletters.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/views/subscriptions.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/views/tracking.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/admin/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/admin/filters.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/admin/resources.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/admin/support_admin.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/apps.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/managers/message_manager.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/managers/ticket_manager.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/migrations/0001_initial.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/migrations/0002_alter_message_ticket.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/migrations/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/models.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/serializers.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/signals.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/templates/support/chat/access_denied.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/templates/support/chat/ticket_chat.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/urls.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/utils/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/utils/support_email_service.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/views/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/views/admin.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/views/api.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/views/chat.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/admin.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/apps.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/serializers.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/css/dashboard.css +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/js/api.js +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/js/dashboard.js +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/js/modals.js +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/js/notifications.js +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/js/task-monitor.js +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/js/theme.js +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/base.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/components/info_cards.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/components/management_actions.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/components/overview_tab.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/components/queues_tab.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/components/status_cards.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/components/workers_tab.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/templates/tasks/dashboard.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/urls.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/views.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/urls.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/archive/django_sample.zip +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/cli/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/cli/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/cli/commands/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/cli/commands/create_project.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/cli/commands/info.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/cli/main.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/cli/utils.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/core/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/core/config.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/core/environment.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/core/generation.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/core/validation.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/exceptions.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/integration.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/check_settings.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/clear_constance.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/create_token.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/generate.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/list_urls.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/migrate_all.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/migrator.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/rundramatiq.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/runserver_ngrok.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/script.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/show_config.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/show_urls.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/superuser.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/task_clear.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/task_status.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/test_email.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/test_telegram.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/test_twilio.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/tree.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/management/commands/validate_config.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/middleware/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/middleware/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/middleware/public_endpoints.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/middleware/user_activity.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/cache.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/constance.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/database.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/jwt.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/limits.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/ngrok.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/revolution.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/services.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/tasks.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/models/unfold.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/base.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_currency/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_currency/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_currency/cache.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_currency/converter.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_currency/service.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_email.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/example.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/llm/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/llm/cache.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/llm/costs.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/llm/extractor.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/llm/models_cache.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/llm/tokenizer.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/translator/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/translator/cache.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_llm/translator/translator.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_logger.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_ngrok.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_tasks.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_telegram.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/README.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/exceptions.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/models.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/sendgrid_service.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/service.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/simple_service.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/templates/guide.md +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/templates/sendgrid_test_data.json +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/django_twilio/twilio_service.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/dramatiq_setup.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/logger.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/unfold/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/unfold/callbacks.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/unfold/dashboard.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/unfold/models.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/unfold/system_monitor.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/modules/unfold/tailwind.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/pyproject.toml +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/routers.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/constance/change_list.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/constance/includes/default_value.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/constance/includes/fieldset_header.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/constance/includes/results_list.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/constance/includes/setting_row.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/constance/includes/table_headers.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/index.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/layouts/dashboard_with_tabs.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/activity_tracker.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/charts_section.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/django_commands.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/quick_actions.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/recent_activity.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/recent_users_table.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/stats_cards.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/stats_tiles.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/system_health.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/system_metrics.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/components/user_permissions.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/tabs/app_stats_tab.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/tabs/commands_tab.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/tabs/overview_tab.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/tabs/stats_tab.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/tabs/users_tab.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/admin/snippets/zones/zones_table.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/templates/emails/base_email.html +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/utils/__init__.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/utils/path_resolution.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/utils/smart_defaults.py +0 -0
- {django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/version_check.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: django-cfg
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.80
|
4
4
|
Summary: 🚀 Production-ready Django configuration framework with type-safe settings, smart automation, and modern developer experience
|
5
5
|
Project-URL: Homepage, https://github.com/markolofsen/django-cfg
|
6
6
|
Project-URL: Documentation, https://django-cfg.readthedocs.io
|
@@ -46,7 +46,7 @@ Requires-Dist: django-import-export<5.0.0,>=4.3.9
|
|
46
46
|
Requires-Dist: django-json-widget>=2.0.3
|
47
47
|
Requires-Dist: django-ratelimit<5.0.0,>=4.1.0
|
48
48
|
Requires-Dist: django-redis>=6.0.0
|
49
|
-
Requires-Dist: django-revolution>=1.0.
|
49
|
+
Requires-Dist: django-revolution>=1.0.35
|
50
50
|
Requires-Dist: django-unfold>=0.64.0
|
51
51
|
Requires-Dist: djangorestframework-simplejwt>=5.5.0
|
52
52
|
Requires-Dist: djangorestframework-simplejwt[token-blacklist]>=5.5.0
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "django-cfg"
|
7
|
-
version = "1.1.
|
7
|
+
version = "1.1.80"
|
8
8
|
description = "🚀 Production-ready Django configuration framework with type-safe settings, smart automation, and modern developer experience"
|
9
9
|
readme = "README.md"
|
10
10
|
license = {text = "MIT"}
|
@@ -83,7 +83,7 @@ dependencies = [
|
|
83
83
|
"django-import-export (>=4.3.9,<5.0.0)",
|
84
84
|
"django-extensions>=4.1",
|
85
85
|
"django-constance>=4.3.2",
|
86
|
-
"django-revolution>=1.0.
|
86
|
+
"django-revolution>=1.0.35",
|
87
87
|
"django-unfold>=0.64.0",
|
88
88
|
"django-redis>=6.0.0",
|
89
89
|
"redis>=6.4.0",
|
@@ -22,7 +22,7 @@ django-import-export (>=4.3.9,<5.0.0)
|
|
22
22
|
django-json-widget>=2.0.3
|
23
23
|
django-ratelimit (>=4.1.0,<5.0.0)
|
24
24
|
django-redis>=6.0.0
|
25
|
-
django-revolution>=1.0.
|
25
|
+
django-revolution>=1.0.35
|
26
26
|
django-unfold>=0.64.0
|
27
27
|
django>=5.2,<6.0
|
28
28
|
djangorestframework-simplejwt>=5.5.0
|
@@ -19,7 +19,7 @@ django-import-export (>=4.3.9,<5.0.0)
|
|
19
19
|
django-json-widget>=2.0.3
|
20
20
|
django-ratelimit (>=4.1.0,<5.0.0)
|
21
21
|
django-redis>=6.0.0
|
22
|
-
django-revolution>=1.0.
|
22
|
+
django-revolution>=1.0.35
|
23
23
|
django-unfold>=0.64.0
|
24
24
|
django>=5.2,<6.0
|
25
25
|
djangorestframework-simplejwt>=5.5.0
|
@@ -19,7 +19,7 @@ django-import-export (>=4.3.9,<5.0.0)
|
|
19
19
|
django-json-widget>=2.0.3
|
20
20
|
django-ratelimit (>=4.1.0,<5.0.0)
|
21
21
|
django-redis>=6.0.0
|
22
|
-
django-revolution>=1.0.
|
22
|
+
django-revolution>=1.0.35
|
23
23
|
django-unfold>=0.64.0
|
24
24
|
djangorestframework-simplejwt>=5.5.0
|
25
25
|
djangorestframework-simplejwt[token-blacklist]>=5.5.0
|
@@ -38,7 +38,7 @@ default_app_config = "django_cfg.apps.DjangoCfgConfig"
|
|
38
38
|
from typing import TYPE_CHECKING
|
39
39
|
|
40
40
|
# Version information
|
41
|
-
__version__ = "1.1.
|
41
|
+
__version__ = "1.1.80"
|
42
42
|
__author__ = "Unrealos Team"
|
43
43
|
__email__ = "info@unrealos.com"
|
44
44
|
__license__ = "MIT"
|
@@ -103,7 +103,18 @@ class SpectacularConfig(BaseModel):
|
|
103
103
|
# Schema Settings
|
104
104
|
schema_path_prefix: str = Field(default="/api", description="Schema path prefix")
|
105
105
|
serve_include_schema: bool = Field(default=False, description="Include schema in UI")
|
106
|
-
|
106
|
+
schema_coerce_path_pk_suffix: bool = Field(default=True, description="Coerce path PK suffix")
|
107
|
+
schema_coerce_method_names: Dict[str, str] = Field(
|
108
|
+
default_factory=lambda: {
|
109
|
+
"retrieve": "get",
|
110
|
+
"destroy": "delete",
|
111
|
+
"partial_update": "patch",
|
112
|
+
"update": "put",
|
113
|
+
},
|
114
|
+
description="Coerce method names for stable operation IDs"
|
115
|
+
)
|
116
|
+
# component_split_request: bool = Field(default=False, description="Split request components")
|
117
|
+
# component_no_read_only_required: bool = Field(default=True, description="No read-only required")
|
107
118
|
sort_operations: bool = Field(default=False, description="Sort operations")
|
108
119
|
|
109
120
|
# UI Settings
|
@@ -114,13 +125,24 @@ class SpectacularConfig(BaseModel):
|
|
114
125
|
default_factory=RedocUISettings, description="Redoc UI settings"
|
115
126
|
)
|
116
127
|
|
117
|
-
#
|
128
|
+
# Processing hooks
|
118
129
|
postprocessing_hooks: List[str] = Field(
|
119
130
|
default_factory=lambda: [
|
120
131
|
'drf_spectacular.contrib.djangorestframework_camel_case.camelize_serializer_fields'
|
121
132
|
],
|
122
133
|
description="Post-processing hooks"
|
123
134
|
)
|
135
|
+
preprocessing_hooks: List[str] = Field(
|
136
|
+
default_factory=list,
|
137
|
+
description="Pre-processing hooks"
|
138
|
+
)
|
139
|
+
|
140
|
+
# Additional stability settings
|
141
|
+
disable_errors_and_warnings: bool = Field(default=False, description="Disable errors and warnings")
|
142
|
+
operation_id_generator_class: Optional[str] = Field(
|
143
|
+
default=None,
|
144
|
+
description="Custom operation ID generator class"
|
145
|
+
)
|
124
146
|
|
125
147
|
# Enum overrides
|
126
148
|
enum_name_overrides: Dict[str, str] = Field(
|
@@ -139,16 +161,27 @@ class SpectacularConfig(BaseModel):
|
|
139
161
|
"VERSION": self.version,
|
140
162
|
"SERVE_INCLUDE_SCHEMA": self.serve_include_schema,
|
141
163
|
"SCHEMA_PATH_PREFIX": self.schema_path_prefix,
|
142
|
-
|
164
|
+
# Schema stability settings
|
165
|
+
"SCHEMA_COERCE_PATH_PK_SUFFIX": self.schema_coerce_path_pk_suffix,
|
166
|
+
"SCHEMA_COERCE_METHOD_NAMES": self.schema_coerce_method_names,
|
167
|
+
'COMPONENT_SPLIT_REQUEST': False,
|
168
|
+
'COMPONENT_NO_READ_ONLY_REQUIRED': False,
|
143
169
|
"SORT_OPERATIONS": self.sort_operations,
|
144
170
|
# UI Settings
|
145
171
|
"SWAGGER_UI_SETTINGS": self.swagger_ui_settings.to_dict(),
|
146
172
|
"REDOC_UI_SETTINGS": self.redoc_ui_settings.to_dict(),
|
147
173
|
# Processing
|
148
174
|
"POSTPROCESSING_HOOKS": self.postprocessing_hooks,
|
175
|
+
"PREPROCESSING_HOOKS": self.preprocessing_hooks,
|
149
176
|
"ENUM_NAME_OVERRIDES": self.enum_name_overrides,
|
177
|
+
# Stability settings
|
178
|
+
"DISABLE_ERRORS_AND_WARNINGS": self.disable_errors_and_warnings,
|
150
179
|
}
|
151
180
|
|
181
|
+
# Add optional operation ID generator
|
182
|
+
if self.operation_id_generator_class:
|
183
|
+
settings["OPERATION_ID_GENERATOR_CLASS"] = self.operation_id_generator_class
|
184
|
+
|
152
185
|
# Add optional fields if present
|
153
186
|
if self.terms_of_service:
|
154
187
|
settings["TERMS_OF_SERVICE"] = self.terms_of_service
|
@@ -223,7 +223,7 @@ class LLMClient:
|
|
223
223
|
temperature: Optional[float] = None,
|
224
224
|
response_format: Optional[str] = None,
|
225
225
|
**kwargs
|
226
|
-
) ->
|
226
|
+
) -> ChatCompletionResponse:
|
227
227
|
"""
|
228
228
|
Send chat completion request.
|
229
229
|
|
@@ -260,7 +260,8 @@ class LLMClient:
|
|
260
260
|
if cached_response:
|
261
261
|
logger.debug("Cache hit for chat completion")
|
262
262
|
self.stats['cache_hits'] += 1
|
263
|
-
|
263
|
+
# Convert cached dict back to Pydantic model
|
264
|
+
return ChatCompletionResponse(**cached_response)
|
264
265
|
|
265
266
|
self.stats['cache_misses'] += 1
|
266
267
|
self.stats['total_requests'] += 1
|
@@ -307,23 +308,33 @@ class LLMClient:
|
|
307
308
|
if response_format == "json" and content:
|
308
309
|
extracted_json = self.extractor.extract_json_from_response(content)
|
309
310
|
|
310
|
-
# Create response object
|
311
|
-
completion_response =
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
311
|
+
# Create Pydantic response object
|
312
|
+
completion_response = ChatCompletionResponse(
|
313
|
+
id=response.id,
|
314
|
+
model=response.model,
|
315
|
+
created=datetime.fromtimestamp(response.created).isoformat(),
|
316
|
+
choices=[
|
317
|
+
ChatChoice(
|
318
|
+
index=choice.index,
|
319
|
+
message=choice.message.model_dump() if hasattr(choice.message, 'model_dump') else choice.message,
|
320
|
+
finish_reason=choice.finish_reason
|
321
|
+
) for choice in response.choices
|
322
|
+
] if response.choices else [],
|
323
|
+
usage=TokenUsage(
|
324
|
+
prompt_tokens=response.usage.prompt_tokens if response.usage else 0,
|
325
|
+
completion_tokens=response.usage.completion_tokens if response.usage else 0,
|
326
|
+
total_tokens=response.usage.total_tokens if response.usage else tokens_used
|
327
|
+
) if response.usage else TokenUsage(total_tokens=tokens_used),
|
328
|
+
finish_reason=response.choices[0].finish_reason if response.choices else None,
|
329
|
+
content=content,
|
330
|
+
tokens_used=tokens_used,
|
331
|
+
cost_usd=cost_usd,
|
332
|
+
processing_time=processing_time,
|
333
|
+
extracted_json=extracted_json
|
334
|
+
)
|
324
335
|
|
325
|
-
# Cache the response
|
326
|
-
self.cache.set_response(request_hash, completion_response, model)
|
336
|
+
# Cache the response (serialize to dict for caching)
|
337
|
+
self.cache.set_response(request_hash, completion_response.model_dump(), model)
|
327
338
|
|
328
339
|
# Update stats
|
329
340
|
self.stats['successful_requests'] += 1
|
@@ -2,8 +2,9 @@
|
|
2
2
|
Pydantic models for LLM client responses.
|
3
3
|
"""
|
4
4
|
|
5
|
+
import math
|
5
6
|
from typing import List, Optional, Dict, Any, Union
|
6
|
-
from pydantic import BaseModel, Field
|
7
|
+
from pydantic import BaseModel, Field, validator
|
7
8
|
from datetime import datetime
|
8
9
|
|
9
10
|
|
@@ -34,6 +35,20 @@ class ChatCompletionResponse(BaseModel):
|
|
34
35
|
cost_usd: float = Field(default=0.0, description="Cost in USD")
|
35
36
|
processing_time: float = Field(default=0.0, description="Processing time in seconds")
|
36
37
|
extracted_json: Optional[Dict[str, Any]] = Field(default=None, description="Extracted JSON if any")
|
38
|
+
|
39
|
+
@validator('cost_usd')
|
40
|
+
def validate_cost_usd(cls, v):
|
41
|
+
"""Validate cost_usd to prevent NaN values."""
|
42
|
+
if v is None or math.isnan(v) or math.isinf(v):
|
43
|
+
return 0.0
|
44
|
+
return v
|
45
|
+
|
46
|
+
@validator('processing_time')
|
47
|
+
def validate_processing_time(cls, v):
|
48
|
+
"""Validate processing_time to prevent NaN values."""
|
49
|
+
if v is None or math.isnan(v) or math.isinf(v):
|
50
|
+
return 0.0
|
51
|
+
return v
|
37
52
|
|
38
53
|
|
39
54
|
class EmbeddingResponse(BaseModel):
|
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
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/registration_source.py
RENAMED
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/admin/twilio_response.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/management/commands/test_otp.py
RENAMED
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/managers/user_manager.py
RENAMED
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/migrations/0001_initial.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/serializers/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/services/activity_service.py
RENAMED
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/services/otp_service.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/templates/emails/base_email.txt
RENAMED
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/templates/emails/otp_email.html
RENAMED
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/accounts/templates/emails/otp_email.txt
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/leads/migrations/0001_initial.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
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/admin/newsletter_admin.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/management/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/migrations/0001_initial.py
RENAMED
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/migrations/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/services/email_service.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
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/newsletter/views/subscriptions.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
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/managers/message_manager.py
RENAMED
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/managers/ticket_manager.py
RENAMED
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/migrations/0001_initial.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
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/support/utils/support_email_service.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
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/css/dashboard.css
RENAMED
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/js/dashboard.js
RENAMED
File without changes
|
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/js/notifications.js
RENAMED
File without changes
|
{django_cfg-1.1.78 → django_cfg-1.1.80}/src/django_cfg/apps/tasks/static/tasks/js/task-monitor.js
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|