django-cfg 1.2.23__py3-none-any.whl → 1.2.25__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/knowbase/tasks/archive_tasks.py +6 -6
  3. django_cfg/apps/knowbase/tasks/document_processing.py +3 -3
  4. django_cfg/apps/knowbase/tasks/external_data_tasks.py +2 -2
  5. django_cfg/apps/knowbase/tasks/maintenance.py +3 -3
  6. django_cfg/apps/payments/config/__init__.py +15 -37
  7. django_cfg/apps/payments/config/module.py +30 -122
  8. django_cfg/apps/payments/config/providers.py +22 -0
  9. django_cfg/apps/payments/config/settings.py +53 -93
  10. django_cfg/apps/payments/config/utils.py +10 -156
  11. django_cfg/apps/payments/management/__init__.py +3 -0
  12. django_cfg/apps/payments/management/commands/README.md +178 -0
  13. django_cfg/apps/payments/management/commands/__init__.py +3 -0
  14. django_cfg/apps/payments/management/commands/currency_stats.py +323 -0
  15. django_cfg/apps/payments/management/commands/populate_currencies.py +246 -0
  16. django_cfg/apps/payments/management/commands/update_currencies.py +336 -0
  17. django_cfg/apps/payments/managers/currency_manager.py +65 -14
  18. django_cfg/apps/payments/middleware/api_access.py +33 -0
  19. django_cfg/apps/payments/migrations/0001_initial.py +94 -1
  20. django_cfg/apps/payments/models/payments.py +110 -0
  21. django_cfg/apps/payments/services/__init__.py +7 -1
  22. django_cfg/apps/payments/services/core/balance_service.py +14 -16
  23. django_cfg/apps/payments/services/core/fallback_service.py +432 -0
  24. django_cfg/apps/payments/services/core/payment_service.py +212 -29
  25. django_cfg/apps/payments/services/core/subscription_service.py +15 -17
  26. django_cfg/apps/payments/services/internal_types.py +31 -0
  27. django_cfg/apps/payments/services/monitoring/__init__.py +22 -0
  28. django_cfg/apps/payments/services/monitoring/api_schemas.py +222 -0
  29. django_cfg/apps/payments/services/monitoring/provider_health.py +372 -0
  30. django_cfg/apps/payments/services/providers/__init__.py +3 -0
  31. django_cfg/apps/payments/services/providers/cryptapi.py +14 -3
  32. django_cfg/apps/payments/services/providers/cryptomus.py +310 -0
  33. django_cfg/apps/payments/services/providers/registry.py +4 -0
  34. django_cfg/apps/payments/services/security/__init__.py +34 -0
  35. django_cfg/apps/payments/services/security/error_handler.py +637 -0
  36. django_cfg/apps/payments/services/security/payment_notifications.py +342 -0
  37. django_cfg/apps/payments/services/security/webhook_validator.py +475 -0
  38. django_cfg/apps/payments/signals/api_key_signals.py +10 -0
  39. django_cfg/apps/payments/signals/payment_signals.py +3 -2
  40. django_cfg/apps/payments/tasks/__init__.py +12 -0
  41. django_cfg/apps/payments/tasks/webhook_processing.py +177 -0
  42. django_cfg/apps/payments/utils/__init__.py +7 -4
  43. django_cfg/apps/payments/utils/billing_utils.py +342 -0
  44. django_cfg/apps/payments/utils/config_utils.py +2 -0
  45. django_cfg/apps/payments/views/payment_views.py +40 -2
  46. django_cfg/apps/payments/views/webhook_views.py +266 -0
  47. django_cfg/apps/payments/viewsets.py +65 -0
  48. django_cfg/cli/README.md +2 -2
  49. django_cfg/cli/commands/create_project.py +1 -1
  50. django_cfg/cli/commands/info.py +1 -1
  51. django_cfg/cli/main.py +1 -1
  52. django_cfg/cli/utils.py +5 -5
  53. django_cfg/core/config.py +18 -4
  54. django_cfg/models/payments.py +546 -0
  55. django_cfg/models/tasks.py +51 -2
  56. django_cfg/modules/base.py +11 -5
  57. django_cfg/modules/django_currency/README.md +104 -269
  58. django_cfg/modules/django_currency/__init__.py +99 -41
  59. django_cfg/modules/django_currency/clients/__init__.py +11 -0
  60. django_cfg/modules/django_currency/clients/coingecko_client.py +257 -0
  61. django_cfg/modules/django_currency/clients/yfinance_client.py +246 -0
  62. django_cfg/modules/django_currency/core/__init__.py +42 -0
  63. django_cfg/modules/django_currency/core/converter.py +169 -0
  64. django_cfg/modules/django_currency/core/exceptions.py +28 -0
  65. django_cfg/modules/django_currency/core/models.py +54 -0
  66. django_cfg/modules/django_currency/database/__init__.py +25 -0
  67. django_cfg/modules/django_currency/database/database_loader.py +507 -0
  68. django_cfg/modules/django_currency/utils/__init__.py +9 -0
  69. django_cfg/modules/django_currency/utils/cache.py +92 -0
  70. django_cfg/registry/core.py +10 -0
  71. django_cfg/template_archive/__init__.py +0 -0
  72. django_cfg/template_archive/django_sample.zip +0 -0
  73. {django_cfg-1.2.23.dist-info → django_cfg-1.2.25.dist-info}/METADATA +10 -6
  74. {django_cfg-1.2.23.dist-info → django_cfg-1.2.25.dist-info}/RECORD +77 -51
  75. django_cfg/apps/agents/examples/__init__.py +0 -3
  76. django_cfg/apps/agents/examples/simple_example.py +0 -161
  77. django_cfg/apps/knowbase/examples/__init__.py +0 -3
  78. django_cfg/apps/knowbase/examples/external_data_usage.py +0 -191
  79. django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +0 -199
  80. django_cfg/modules/django_currency/cache.py +0 -430
  81. django_cfg/modules/django_currency/converter.py +0 -324
  82. django_cfg/modules/django_currency/service.py +0 -277
  83. {django_cfg-1.2.23.dist-info → django_cfg-1.2.25.dist-info}/WHEEL +0 -0
  84. {django_cfg-1.2.23.dist-info → django_cfg-1.2.25.dist-info}/entry_points.txt +0 -0
  85. {django_cfg-1.2.23.dist-info → django_cfg-1.2.25.dist-info}/licenses/LICENSE +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.2.23
3
+ Version: 1.2.25
4
4
  Summary: 🚀 Next-gen Django configuration: type-safety, AI features, blazing-fast setup, and automated best practices — all in one.
5
5
  Project-URL: Homepage, https://djangocfg.com
6
6
  Project-URL: Documentation, https://docs.djangocfg.com
7
- Project-URL: Repository, https://github.com/reformsai/django-cfg
8
- Project-URL: Issues, https://github.com/reformsai/django-cfg/issues
9
- Project-URL: Changelog, https://github.com/reformsai/django-cfg/blob/main/CHANGELOG.md
7
+ Project-URL: Repository, https://github.com/markolofsen/django-cfg
8
+ Project-URL: Issues, https://github.com/markolofsen/django-cfg/issues
9
+ Project-URL: Changelog, https://github.com/markolofsen/django-cfg/blob/main/CHANGELOG.md
10
10
  Author-email: Django-CFG Team <info@djangocfg.com>
11
11
  Maintainer-email: Django-CFG Team <info@djangocfg.com>
12
12
  License: MIT
@@ -64,6 +64,7 @@ Requires-Dist: ngrok>=1.5.1; python_version >= '3.12'
64
64
  Requires-Dist: openai<2.0,>=1.107.0
65
65
  Requires-Dist: pgvector<1.0,>=0.4.0
66
66
  Requires-Dist: psycopg[binary,pool]<4.0,>=3.2.0
67
+ Requires-Dist: pycoingecko<4.0.0,>=3.2.0
67
68
  Requires-Dist: pydantic-ai<2.0,>=1.0.10
68
69
  Requires-Dist: pydantic-yaml<2.0,>=1.6.0
69
70
  Requires-Dist: pydantic<3.0,>=2.11.0
@@ -76,10 +77,12 @@ Requires-Dist: redis<7.0,>=6.4.0
76
77
  Requires-Dist: requests<3.0,>=2.32.0
77
78
  Requires-Dist: rich<15.0,>=14.0.0
78
79
  Requires-Dist: sendgrid<7.0,>=6.12.0
80
+ Requires-Dist: tenacity<10.0.0,>=9.1.2
79
81
  Requires-Dist: tiktoken<1.0,>=0.11.0
80
82
  Requires-Dist: toml<0.11.0,>=0.10.2
81
83
  Requires-Dist: twilio<10.0,>=9.8.0
82
84
  Requires-Dist: whitenoise<7.0,>=6.8.0
85
+ Requires-Dist: yfinance<0.3.0,>=0.2.66
83
86
  Provides-Extra: dev
84
87
  Requires-Dist: black<26.0,>=25.9; extra == 'dev'
85
88
  Requires-Dist: build<2.0,>=1.3; extra == 'dev'
@@ -206,6 +209,7 @@ python manage.py runserver
206
209
  | **🎫 Support System** | ❌ Build from scratch | ❌ Build from scratch | ❌ Build from scratch | ✅ **Enterprise ticketing** |
207
210
  | **👤 User Management** | 🟡 Basic User model | 🟡 Basic auth | ❌ Manual auth | ✅ **OTP + SMS + Profiles** |
208
211
  | **📧 Communication** | 🟡 Basic email | ❌ Manual setup | ❌ Manual setup | ✅ **Email + SMS + Telegram** |
212
+ | **💱 Currency Conversion** | ❌ Manual API integration | ❌ Manual API integration | ❌ Manual API integration | ✅ **Multi-threading 14K+ currencies** |
209
213
  | **🔄 Background Tasks** | 🟡 Manual Celery | 🟡 Manual Celery | ❌ Manual setup | ✅ **Built-in Dramatiq** |
210
214
  | **🌐 Webhook Testing** | 🟡 Manual ngrok | 🟡 Manual ngrok | 🟡 Manual ngrok | ✅ **Integrated ngrok** |
211
215
  | **🚀 Production Deploy** | 🟡 Manual config | 🟡 Manual config | 🟡 Manual config | ✅ **Zero-config Docker** |
@@ -562,7 +566,7 @@ docker-compose up -d
562
566
  ### **🚀 Enterprise Features**
563
567
  - [**Built-in Applications**](https://docs.djangocfg.com/features/built-in-apps/accounts) - User management, support, CRM
564
568
  - [**Maintenance Management**](https://docs.djangocfg.com/features/built-in-apps/maintenance) - Multi-site Cloudflare maintenance
565
- - [**Modular System**](https://docs.djangocfg.com/features/modules/overview) - Email, SMS, LLM, currency modules
569
+ - [**Modular System**](https://docs.djangocfg.com/features/modules/overview) - Email, SMS, LLM, **currency conversion** modules
566
570
  - [**Third-party Integrations**](https://docs.djangocfg.com/features/integrations/patterns) - Dramatiq, Twilio, ngrok
567
571
 
568
572
  ### **🤖 AI & Automation**
@@ -1023,4 +1027,4 @@ Django-CFG is built on the shoulders of giants:
1023
1027
 
1024
1028
  ## 🔍 SEO Keywords
1025
1029
 
1026
- **Django configuration**, **Django type safety**, **Django enterprise**, **Pydantic Django**, **Django AI agents**, **Django background tasks**, **Django multi-database**, **Django production deployment**, **Django REST API**, **Django admin interface**, **Django authentication**, **Django CRM**, **Django support system**, **Django newsletter**, **Django CLI tools**, **Django Docker**, **Django ngrok**, **Django Twilio**, **Django SMS**, **Django OTP**, **Django Dramatiq**, **Django Redis**, **Django PostgreSQL**, **Django testing**, **Django migration**, **Django security**, **Django performance**, **Django scalability**, **Django monitoring**, **Django logging**, **Django webhooks**, **Django OpenAPI**, **Django Swagger**, **Django documentation**, **Django framework**, **Python Django**, **Django development**, **Django best practices**
1030
+ **Django configuration**, **Django type safety**, **Django enterprise**, **Pydantic Django**, **Django AI agents**, **Django background tasks**, **Django multi-database**, **Django production deployment**, **Django REST API**, **Django admin interface**, **Django authentication**, **Django CRM**, **Django support system**, **Django newsletter**, **Django CLI tools**, **Django Docker**, **Django ngrok**, **Django Twilio**, **Django SMS**, **Django OTP**, **Django Dramatiq**, **Django Redis**, **Django PostgreSQL**, **Django currency conversion**, **Django cryptocurrency**, **Django YFinance**, **Django CoinGecko**, **Django multi-threading**, **Django testing**, **Django migration**, **Django security**, **Django performance**, **Django scalability**, **Django monitoring**, **Django logging**, **Django webhooks**, **Django OpenAPI**, **Django Swagger**, **Django documentation**, **Django framework**, **Python Django**, **Django development**, **Django best practices**
@@ -1,5 +1,5 @@
1
1
  django_cfg/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- django_cfg/__init__.py,sha256=UAyyUuLL3rXe_tPmnLDBZA3gajkyvd4DvOdkV8sJKko,1631
2
+ django_cfg/__init__.py,sha256=u75qyot9NFryu7h0faTV0Wz4jBKQAh_5hKy33b9hX1E,1631
3
3
  django_cfg/apps.py,sha256=k84brkeXJI7EgKZLEpTkM9YFZofKI4PzhFOn1cl9Msc,1656
4
4
  django_cfg/config.py,sha256=ME-JKaVzcdmaGhuc1YTkEWoMKSaUasNf1SBlNz-NfrM,1399
5
5
  django_cfg/urls.py,sha256=bpRFjMonQuk4UCUMxx4ueBX3YDNB7HXKFwEghQ3KR3o,793
@@ -73,8 +73,6 @@ django_cfg/apps/agents/core/dependencies.py,sha256=orodh1UXN-U6V3TvOB5ZYluG__ggV
73
73
  django_cfg/apps/agents/core/exceptions.py,sha256=topfsv3TekVpMio8bhbsugpp2CTmR3nKjnUQamtJyTo,1858
74
74
  django_cfg/apps/agents/core/models.py,sha256=JVNJ6kULgBvjuuZCXzFY1mQrYbaGdP9smj2p55k0YUI,4044
75
75
  django_cfg/apps/agents/core/orchestrator.py,sha256=4kAIA2ksc9W3Rm2Kf_ELmDl4744vJugxpF1dlMd_Hh4,12930
76
- django_cfg/apps/agents/examples/__init__.py,sha256=c4EcvvgKS0KP53VDDdYkLzXmTxADwCaaB5opHGLlHkk,42
77
- django_cfg/apps/agents/examples/simple_example.py,sha256=P1RgYaA7jU7gmw3V2TykTEriAJTL3bwb78j3zgYmyDI,4666
78
76
  django_cfg/apps/agents/integration/__init__.py,sha256=ZE2u9lT5RgnzlOB5DfYmHQbgkLwVjBD_h9EeiPs5Txo,310
79
77
  django_cfg/apps/agents/integration/middleware.py,sha256=HE52iXZTTGoh7VrWaJ6fp6Wl7pUnH71WHTPcUG8I-dc,2861
80
78
  django_cfg/apps/agents/integration/registry.py,sha256=yezp0dHXlGrvZMLl6prHQX2xkDMXtJ2n27f0sD9w_r0,11249
@@ -121,8 +119,6 @@ django_cfg/apps/knowbase/config/__init__.py,sha256=IArKoqnqUClMMkLvAs82bRZVTH5KV
121
119
  django_cfg/apps/knowbase/config/constance_fields.py,sha256=RpkNE7dy8bfLP81HgHKOiEGrHKTFU87oGjApua9SC94,8193
122
120
  django_cfg/apps/knowbase/config/constance_settings.py,sha256=KjxlHb3btxRyEYoOO-d_vW2glcy5cHp5cj4uWHg8-W0,7564
123
121
  django_cfg/apps/knowbase/config/settings.py,sha256=X_h0MXId6ZFwZ19dizp5OGDZfmNmCJW9YEu6DOVFLPE,13295
124
- django_cfg/apps/knowbase/examples/__init__.py,sha256=-uJe4FFA9h8DAg17HYI-7U10_zfH07dYL4ET1Ntq40o,81
125
- django_cfg/apps/knowbase/examples/external_data_usage.py,sha256=bUaIBkUkeucdPQGyYDVY_lpZ1wcA_voK7uVPiskxebo,6398
126
122
  django_cfg/apps/knowbase/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
123
  django_cfg/apps/knowbase/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
124
  django_cfg/apps/knowbase/management/commands/knowbase_stats.py,sha256=V9APmqzfs6l6-z5Oh1cdEkiP3txxWq1ZNN3DEM2EDXA,6114
@@ -141,7 +137,6 @@ django_cfg/apps/knowbase/mixins/config.py,sha256=Lptwhneyg2sNv15BS2EO9d2Syrz0spC
141
137
  django_cfg/apps/knowbase/mixins/creator.py,sha256=icFzOfWyO6asXsJPteescZXcB5aLg0gu2-9f4GXetN0,2907
142
138
  django_cfg/apps/knowbase/mixins/external_data_mixin.py,sha256=GJuc0HXJK4Po4knx_9NW039teLl7ofkgxml7ySx_Ugc,33275
143
139
  django_cfg/apps/knowbase/mixins/service.py,sha256=QvB2K5LKSgU99C63sj-JLLKgdRXybizxwOk2AvzfMnk,13438
144
- django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py,sha256=tTW7Aee3EroeWdWbD6IyBddJW9sWVjQFdD60AoGy5-8,7007
145
140
  django_cfg/apps/knowbase/models/__init__.py,sha256=MnMzbOZTB3dlo0IU1VsgQVY1uPOgU6FtQFiAUyaK6AU,742
146
141
  django_cfg/apps/knowbase/models/archive.py,sha256=qNSfOvfAf3oDzpiGjgZH7v2JjLMz2Yt7CdrEUxd7bUM,18600
147
142
  django_cfg/apps/knowbase/models/base.py,sha256=ojkeEige-Z4W4HV96FSL3phjipVUwbUzKjRzWl_28vM,1478
@@ -179,10 +174,10 @@ django_cfg/apps/knowbase/signals/chat_signals.py,sha256=K7fu1o4RmAbh3Ag9hygJQTSv
179
174
  django_cfg/apps/knowbase/signals/document_signals.py,sha256=CFzcrxZg2qcszTg_SbbtoNPaSo5Ja-TiaGTr9wqH2mw,5786
180
175
  django_cfg/apps/knowbase/signals/external_data_signals.py,sha256=XzKDU4Ml64T6wnBF1bTUkeSkQ3p3gXXPC2GhGZvnVZE,7187
181
176
  django_cfg/apps/knowbase/tasks/__init__.py,sha256=F4eMeSoKVu7d1Wboc52Ash4NEIeYG5j6yvch9GgrB2U,908
182
- django_cfg/apps/knowbase/tasks/archive_tasks.py,sha256=0gk08DeG_T3dSmagaD6TvdA7074AjwqiRUs1nXRTaJ8,10037
183
- django_cfg/apps/knowbase/tasks/document_processing.py,sha256=wUVaEvl7fG-i8sKezkR8O-WTWJSm1vYDViqdP_I1htk,12996
184
- django_cfg/apps/knowbase/tasks/external_data_tasks.py,sha256=1DjE-AzEf39TeSZi8eWHPxS5rS92pjHI2pMBKHLX6lc,12344
185
- django_cfg/apps/knowbase/tasks/maintenance.py,sha256=53AMj7R_1Y-cvbqL8MiSIZ3afCWu8-4yWWfKpczmKQw,6022
177
+ django_cfg/apps/knowbase/tasks/archive_tasks.py,sha256=nu5MrnBKqKW0GtoPOIiUxH-zQ8EZ4cMtaeIumNt0d4c,10031
178
+ django_cfg/apps/knowbase/tasks/document_processing.py,sha256=ZrviGaAQGRLErU5LKoigZTfpKXse9R0-ODqDKT0j5zw,12993
179
+ django_cfg/apps/knowbase/tasks/external_data_tasks.py,sha256=3VKwAvSKKSwZXUN5ooXLsaBHbMKJVFuqmkEAo6aowPo,12342
180
+ django_cfg/apps/knowbase/tasks/maintenance.py,sha256=Yar0dzAnPqWtOgoPbg7VoP8-2ZlLvp3NDkNPO2ATpQw,6019
186
181
  django_cfg/apps/knowbase/utils/__init__.py,sha256=xeEJteQAzc4sSJxxaufN0Kw6wUwpRe82mJqk9wX-5MU,189
187
182
  django_cfg/apps/knowbase/utils/chunk_settings.py,sha256=BxndOSQhApGLi_wWXQDHJ3LUfOcs7Uv65wia52GkTxI,8736
188
183
  django_cfg/apps/knowbase/utils/text_processing.py,sha256=WA_G_dRyQAreDxfRij6dBIh68LGTYYXju5C8qhLnNdc,12989
@@ -271,6 +266,7 @@ django_cfg/apps/payments/__init__.py,sha256=Qb8viLJBKCclV9uuoXjxWXeDevXlbdJ76mV8
271
266
  django_cfg/apps/payments/apps.py,sha256=FZgbLQFMeOJPs_892bM6X-3Edt3YPD2CP50HMekH7Sk,551
272
267
  django_cfg/apps/payments/decorators.py,sha256=A8MsH7hzw8i7Cl3Eh5Lcqd9Dbn_nubbb6BAI3eZMEgk,10960
273
268
  django_cfg/apps/payments/urls.py,sha256=8Tr5Sr3FcTgUB4PRYYlb8MOkugAPgKT46Jd0uVyNruk,3473
269
+ django_cfg/apps/payments/viewsets.py,sha256=QaUXHUbiw4z0oc2JGpJLkTpLIeP6gC2Q7BNcZ_sTBeg,2175
274
270
  django_cfg/apps/payments/admin/__init__.py,sha256=BUTbE4RfbqX3EBF-9oscrh7wQ2tuwCqofGYqlCz4QM4,666
275
271
  django_cfg/apps/payments/admin/api_keys_admin.py,sha256=nMghMkKcDYvjZ4POVwpS59E6Dc7IVP9dHv-1OltpEes,11436
276
272
  django_cfg/apps/payments/admin/balance_admin.py,sha256=Dwap1VZGwNJ4ZbELMDbiVIxQPmI80MWnsTudyZOvsxo,15386
@@ -279,23 +275,29 @@ django_cfg/apps/payments/admin/filters.py,sha256=MCYFqs1t3XL0U4WZv4ONUbwqv0vLOo7
279
275
  django_cfg/apps/payments/admin/payments_admin.py,sha256=fYKiTgEn1mHNZ2bEamTdf0alyZXYi_GgzjuFB81Ib98,4356
280
276
  django_cfg/apps/payments/admin/subscriptions_admin.py,sha256=mJRSyDd761f0LA64AnG19dzTUmiivqq9wZg4roqKYIo,6913
281
277
  django_cfg/apps/payments/admin/tariffs_admin.py,sha256=6UiQyRRIKrDdmpi2IZOpDpLeJLHrebOGNc3OizlikLI,6422
282
- django_cfg/apps/payments/config/__init__.py,sha256=eEfe8z-RKGLmNQaxXdngcUAVnlbq3VKzo9qKMZwh45A,1873
283
- django_cfg/apps/payments/config/module.py,sha256=jm8CFJoFoYhUrd1tt7j0uZgFA7oMOTbLQM21UVZNpQw,6547
284
- django_cfg/apps/payments/config/providers.py,sha256=NuLCdgKbQyMkyWvKKLsmMO4hwkjqT1ddIynsTBoAWAk,3845
285
- django_cfg/apps/payments/config/settings.py,sha256=S0V_DH4EzU21wAGgyodSLGKcSGs3s14GcHAihFgdGMg,6569
286
- django_cfg/apps/payments/config/utils.py,sha256=H-4IdmlbpYAknaGWVvuivT_5lyvWY8q2C50Wb8qnkD8,6549
278
+ django_cfg/apps/payments/config/__init__.py,sha256=JPvd_Skh5fsm4ii2vrvh4hYPjGH1fCNCpwEwJI_s3mE,1397
279
+ django_cfg/apps/payments/config/module.py,sha256=lMl_Zd3dKUQOXkrgcEdw46BOTIoIi-pRVnLPs5hEWZs,2826
280
+ django_cfg/apps/payments/config/providers.py,sha256=xK0HygWu7bRYnspN3hKFNS4VCPL_ySZ780ocYJXoEl8,4840
281
+ django_cfg/apps/payments/config/settings.py,sha256=hiXbUnaALFD5k8yOkrVLOKVZ90pOIpGcw0opmuoAYTk,3846
282
+ django_cfg/apps/payments/config/utils.py,sha256=iHylQn8UFyvl_hGf2mdqlc0HmYIeT39qGOnixJuwK2g,1285
283
+ django_cfg/apps/payments/management/__init__.py,sha256=4DfL_LIMoYeHTC7YG9ssIB9QjZ9MHRajthdwkYLaCko,50
284
+ django_cfg/apps/payments/management/commands/README.md,sha256=ABO_os5t02X63q0FJJZl5CJQDAAdIPUSs6zpG42kfQI,5873
285
+ django_cfg/apps/payments/management/commands/__init__.py,sha256=97LKvfrlc1NTej4KlQSfQ4QRRT3yppwAjTy05EnmEBI,39
286
+ django_cfg/apps/payments/management/commands/currency_stats.py,sha256=ywkKl5nGjU-FdnvfZ76W_7uP1qAL67IdXoJPw3xJodY,11975
287
+ django_cfg/apps/payments/management/commands/populate_currencies.py,sha256=NIrO5xVhStc5spR91sHt7tc2rKZxUa8K-Ai8Gk37Oxg,10127
288
+ django_cfg/apps/payments/management/commands/update_currencies.py,sha256=rdx-KW5viTVQnxVcsWIX-SbimGCj21H7VjvZqzgKfFg,14484
287
289
  django_cfg/apps/payments/managers/__init__.py,sha256=uYiETCw-K5GXQyAwpcOa2Qxzof8sbtTNc_SghyW45YU,672
288
290
  django_cfg/apps/payments/managers/api_key_manager.py,sha256=xhViRKCLC_eR68hankMZQTcbzMgiRJdyr8KYKk01_dQ,928
289
291
  django_cfg/apps/payments/managers/balance_manager.py,sha256=Sm_EETlHO7LtlrWIqF65vFPS4FpPSNYo5oTgQwTFAZ4,13279
290
- django_cfg/apps/payments/managers/currency_manager.py,sha256=-iq_Nhd3cj_n1aUzObBIMhRRHtpOv50Z0phdwOcKv6w,876
292
+ django_cfg/apps/payments/managers/currency_manager.py,sha256=rsmULj7UMRlZtkF1GRZwvn2ciJ5lDqBLo9NoDZmA3zM,2816
291
293
  django_cfg/apps/payments/managers/payment_manager.py,sha256=udiTFIIVXsjqmlwzFwcT0ZTkYJZ9HVOSLLFTvAodY3w,1467
292
294
  django_cfg/apps/payments/managers/subscription_manager.py,sha256=LHrw5INc1nSqfpw76bn7W2poEA-29FXfF5uhaxmq7l8,968
293
295
  django_cfg/apps/payments/managers/tariff_manager.py,sha256=Kor_0ApvROcH0UKlp1-9rYChtHWDeOFgUc1GG3IepxY,799
294
296
  django_cfg/apps/payments/middleware/__init__.py,sha256=ryn3emWBq15-kE8eJxX19gd-eTrk7JlpXqV2Cg8N_Wg,294
295
- django_cfg/apps/payments/middleware/api_access.py,sha256=JcAg0ntqjR_r1LTUmJ9DTp1F8Uv62_Hza5mo9Rn6hDw,9406
297
+ django_cfg/apps/payments/middleware/api_access.py,sha256=u7fHQk2NA9QWbku5YU3T5ZzwS4SeWcZzToa8y1ClcHc,10788
296
298
  django_cfg/apps/payments/middleware/rate_limiting.py,sha256=MhpHQkTjoHdH-tsJNlZATQQ9d9R9PDTwrdw1gUt_ydo,7407
297
299
  django_cfg/apps/payments/middleware/usage_tracking.py,sha256=i8KT5E0dN6zhQwY8A-wFWtpkc9FJpfTQ4qTnRV8onmw,11176
298
- django_cfg/apps/payments/migrations/0001_initial.py,sha256=uLAGM9KXBHLuLt4NN9yY8qcelxZ0gxUQYwv2zfp9nus,40538
300
+ django_cfg/apps/payments/migrations/0001_initial.py,sha256=36RhaBGV8crRsbFT731NS2hpWiW0E-OPNcJkTOJY9-Y,44233
299
301
  django_cfg/apps/payments/migrations/__init__.py,sha256=OHlzxEGDJYKZz82orZXnh77xy-Okv6FcG3EKMfg9LzU,21
300
302
  django_cfg/apps/payments/models/__init__.py,sha256=iYRu56c8oZCG5n52aWJqsKEKX44k0_2BiSFkN8jZ46U,1444
301
303
  django_cfg/apps/payments/models/api_keys.py,sha256=HCtZuvpW7cYRpsSXkS3U3lk_smMQpgLRf7PHaM58MkQ,2484
@@ -303,7 +305,7 @@ django_cfg/apps/payments/models/balance.py,sha256=F7unVOEVZMUGNvPkvGTWsytxfvQKdV
303
305
  django_cfg/apps/payments/models/base.py,sha256=iypC2MCPrASunrJepuY0y7fASVLDMDSqOwAWp-ovTDk,793
304
306
  django_cfg/apps/payments/models/currencies.py,sha256=lz6axNRmfoQa3od-EV78vbZQv3vh2FznxHzGBi20qIU,4106
305
307
  django_cfg/apps/payments/models/events.py,sha256=flKdY3SRAx5UZyHw6wLh5TflHTyy2lQpdi5aa1NqJ1o,2372
306
- django_cfg/apps/payments/models/payments.py,sha256=z_dgYWZBd09wBn5ZEp0jf-3osjJASb4UlWgdELL-f1g,9548
308
+ django_cfg/apps/payments/models/payments.py,sha256=jzzugUX71puUfmcOr4qqg0NCZE6LaZa6t7STI-jzzZE,13945
307
309
  django_cfg/apps/payments/models/subscriptions.py,sha256=femsIzWxSZZdu1Ee_MgCYnnpMnXshejwb1_JPhbo8k8,8193
308
310
  django_cfg/apps/payments/models/tariffs.py,sha256=nqM3RPtu4itAHRvT6jAgZgQEdEIN1KgKnEljkaHGFDc,2749
309
311
  django_cfg/apps/payments/serializers/__init__.py,sha256=4l7Tu1NXztXtqceVbC3OxtWJir4n3_dFpVEgRgQ9J4k,1416
@@ -313,38 +315,51 @@ django_cfg/apps/payments/serializers/currencies.py,sha256=SskSl3rjZBxxLnY_zsaJiF
313
315
  django_cfg/apps/payments/serializers/payments.py,sha256=BDhcD9DCea50Cz1PumLNVntgH40dOR55NzCXv4I0YOQ,2258
314
316
  django_cfg/apps/payments/serializers/subscriptions.py,sha256=16OileC0yxM90ERK3Uo5Jqe9DeyNf3tBwK-ZqDtEbPw,2795
315
317
  django_cfg/apps/payments/serializers/tariffs.py,sha256=54N5tFpc5NBIMyXuN7Re6pDNoQLJc2yZBIb5uVRhn-I,1698
316
- django_cfg/apps/payments/services/__init__.py,sha256=rBXpwd9kR-zcrjDoBPivUjWpw3vPgAVNUGmpATX1T7Y,1786
317
- django_cfg/apps/payments/services/internal_types.py,sha256=RgKpbGDIGhtFA4fQGwfI3OCiwaC2mOC8bEJP5ecZjdg,7862
318
+ django_cfg/apps/payments/services/__init__.py,sha256=LaY6OcRe1A7ehZwfuFKp1rLNz-Un3BpEahsNnDVHKAw,1941
319
+ django_cfg/apps/payments/services/internal_types.py,sha256=N6Qx_XBJYKI2isKZb5_09T8Pz1arH2jSYwqgdK0H6CU,8828
318
320
  django_cfg/apps/payments/services/billing/__init__.py,sha256=YHdL1RWo-VAotOdZaykArOd0NTGI0fuQ0B7nBRKn6Lg,149
319
321
  django_cfg/apps/payments/services/cache/__init__.py,sha256=CA8cUptfUD5LwbAB9kPMDofdkJBD_o7Z3HHG4vXMoyA,318
320
322
  django_cfg/apps/payments/services/cache/base.py,sha256=McWSpr6eNEXbhG2PBkQd_YkL-he-scoWNUVmKI4FohY,696
321
323
  django_cfg/apps/payments/services/cache/simple_cache.py,sha256=N2i0yGOR5Y1SPl2hqsXcGyehCpwXdN9SQVrphO1yat0,4508
322
324
  django_cfg/apps/payments/services/core/__init__.py,sha256=I7x8Ryz4htQ1LwwtWZRK-MeI_SYboCQ7cKtTxmoqfpk,382
323
- django_cfg/apps/payments/services/core/balance_service.py,sha256=E1r620C25CzcNdkV8INBR8FbEtl02sPSboYtzLZMU9I,16400
324
- django_cfg/apps/payments/services/core/payment_service.py,sha256=CaMGobTU7t7o-i0D_TbfPH15XJ1eilbOFJuBWzAM64g,14634
325
- django_cfg/apps/payments/services/core/subscription_service.py,sha256=ORUHYaz9BQXKwyeRSuLSaKp20UDtRxAkl9PmdRwqxt8,22559
325
+ django_cfg/apps/payments/services/core/balance_service.py,sha256=RvLuIo87U2C24s2Yuci_oftXabLTDzfXKllmVzgDnpw,16262
326
+ django_cfg/apps/payments/services/core/fallback_service.py,sha256=0kJfLFQXS2WFkiu5awc4kwCN-_Pst_0AU21gIXBbp38,16370
327
+ django_cfg/apps/payments/services/core/payment_service.py,sha256=a38zgsW_4qmKmScUdg-gTl991Pr8wUv8Vcm40_lN6VY,21879
328
+ django_cfg/apps/payments/services/core/subscription_service.py,sha256=5_MJTdSU7zgFvQA7-BPkLjqyTJvN_pNgEkacqPztTcU,22632
326
329
  django_cfg/apps/payments/services/middleware/__init__.py,sha256=SAiK2KW4aFVdfjlNrV3Bv8F0qg_epqwbZXOV0WoS6yA,154
327
- django_cfg/apps/payments/services/providers/__init__.py,sha256=A0R28JDaB-sI--wTJ-WegbpKXpVmDizTVTKqOYWvSPM,444
330
+ django_cfg/apps/payments/services/monitoring/__init__.py,sha256=cgN3Soqj_4sLe1j93QFu9P5ZzAw2V12zqE7wii0FYQs,452
331
+ django_cfg/apps/payments/services/monitoring/api_schemas.py,sha256=90VVZGqh3JxXWHeCSaMuzh-72XQlslNv_boihnhxfPc,8706
332
+ django_cfg/apps/payments/services/monitoring/provider_health.py,sha256=uiXyKcDK42b3l19rcN-jy-JUJi6vBqptj5eSVkcWDwY,14169
333
+ django_cfg/apps/payments/services/providers/__init__.py,sha256=RbfjUc0pJzJkfIP0mnTWOtTKEyQ_YSJSZG_8AINaEEw,550
328
334
  django_cfg/apps/payments/services/providers/base.py,sha256=kjWPb7EutZHaByDW3py8srAcnvZdE4oqj6Tp9xS9ADk,3807
329
- django_cfg/apps/payments/services/providers/cryptapi.py,sha256=BrAhUHfoQJgmHpUq9I3hWloMLBzyRCqwNG6pMfs5Qlg,10149
335
+ django_cfg/apps/payments/services/providers/cryptapi.py,sha256=e1ZmglhQ_IKG8fASKBHcCQUs8BbLvUfI9RXdskWXG5U,10668
336
+ django_cfg/apps/payments/services/providers/cryptomus.py,sha256=RKJHpkUnm3YrYc_XH-Eh-UrYwMcer-5XhK_T5Ak8NjE,12436
330
337
  django_cfg/apps/payments/services/providers/nowpayments.py,sha256=xsylxVaN5L5tYfv1j_OJzX_PSEBEq9pmBeRFG80rcCA,11490
331
- django_cfg/apps/payments/services/providers/registry.py,sha256=uS0C9JutkDlhYjlSs_EiK7Qj3gJCEXFt-dgZNqwVVkw,3687
338
+ django_cfg/apps/payments/services/providers/registry.py,sha256=cOOMXLMSK5JWSXPm2j1Ukmw7-qzwpmEUyGfBFTTltK4,3888
339
+ django_cfg/apps/payments/services/security/__init__.py,sha256=4aRxCQRr-lZ4XkU-6-8oL33DOpKmVboGZUfY6NdivEQ,763
340
+ django_cfg/apps/payments/services/security/error_handler.py,sha256=zM552XAaBnqo1LRI7JwusCK99zzLY5WCY3o87Jc1hZ4,23194
341
+ django_cfg/apps/payments/services/security/payment_notifications.py,sha256=MIvUsW2tc8S8IzsCkah9RRJCNMARX-NYtzMOgvUammg,14289
342
+ django_cfg/apps/payments/services/security/webhook_validator.py,sha256=LxtrTEKiRbdCObPHKPqhm7y3m-Mk_UcAKZjXayWDU88,17533
332
343
  django_cfg/apps/payments/services/validators/__init__.py,sha256=_NgbT79oslNvBPPYRpSFnPkvnZuQ48Kk1dzSZIE2ZAU,140
333
344
  django_cfg/apps/payments/signals/__init__.py,sha256=L3danrGQ-9tEfaAbkXOILPb2Bw_T4XRN4PodjMl1hvk,342
334
- django_cfg/apps/payments/signals/api_key_signals.py,sha256=1Sj334_o9vTChrUjiH9KSM789T89S4xHywAncGmT4dE,5601
335
- django_cfg/apps/payments/signals/payment_signals.py,sha256=XbfW0KLYuqEAl8O8PEkcD8dHxgeLPP6YGUFV5vrNvzQ,4823
345
+ django_cfg/apps/payments/signals/api_key_signals.py,sha256=MDkB9A1VxfiTouhpIe_uMoppbmQq0t-YBL_llk45Vcc,5995
346
+ django_cfg/apps/payments/signals/payment_signals.py,sha256=Bo9nDZmn4TV04otp_-pRfwCTsstKUHHzkU5TeVmwKf8,4852
336
347
  django_cfg/apps/payments/signals/subscription_signals.py,sha256=FDXlR02fpS6ILzMJQjoK4Ln1v7Kb8vp_Ej9v_lqnVE0,7492
337
- django_cfg/apps/payments/utils/__init__.py,sha256=uE3H5xO0cxMyxfM39qwmLWIL0QVzArCy0Ecr-poeL-U,1063
338
- django_cfg/apps/payments/utils/config_utils.py,sha256=NvH8thOnlBK5jhgCFzPw6kbYOWIVhiE-YRfWv_U1SQk,8477
348
+ django_cfg/apps/payments/tasks/__init__.py,sha256=0lgH_ZBdEYzy_-pgYN678oppiS7CU_Ni02E9lV_Cy4Y,272
349
+ django_cfg/apps/payments/tasks/webhook_processing.py,sha256=OrE5br3m6ECYzk9qLBo4gI0pEI6dO5y1tZMgae8siPQ,5553
350
+ django_cfg/apps/payments/utils/__init__.py,sha256=CyoHao3WlDPIyRNRChJggsazfRFEIhSC7HUB33GlAnQ,1178
351
+ django_cfg/apps/payments/utils/billing_utils.py,sha256=Kp-DX-RrGYEMvnBbg2oPJ7EjqAzhp4qsVblGLpgcb-k,11708
352
+ django_cfg/apps/payments/utils/config_utils.py,sha256=kuPT-CKPcoQRwPW_oQ0_CzKxP71JG1FP70Jg59PHrAw,8615
339
353
  django_cfg/apps/payments/utils/middleware_utils.py,sha256=MTS9MY_8-VqpBVv8uQYH89rfeG8dTnUru38vVbbE-1o,6682
340
354
  django_cfg/apps/payments/utils/validation_utils.py,sha256=xSxpjz5aAajSOIxDhaXHdB-Uf98MOi3uDKVx0jHmREo,2704
341
355
  django_cfg/apps/payments/views/__init__.py,sha256=00HRO1sDErjnFq2dedFAjBIyIhZZyZmv4DK98lHmx2Q,1613
342
356
  django_cfg/apps/payments/views/api_key_views.py,sha256=fG68roqOF9FShde68Qp_CBf0KJuf1chwK41RU0VqUJk,5542
343
357
  django_cfg/apps/payments/views/balance_views.py,sha256=rA_OJFizP_UBBr8OdWLQZQ51qlPFYoeJCYUzNXSw4S0,2509
344
358
  django_cfg/apps/payments/views/currency_views.py,sha256=B1rjOKDV3KEYRQI6NuPEyEGF8VNumaraoZdI8Qqdu6s,4096
345
- django_cfg/apps/payments/views/payment_views.py,sha256=zfdHiHJhGby6KHpTe5S9UVeC-pFrJD-RTMhHhkSCl5s,4122
359
+ django_cfg/apps/payments/views/payment_views.py,sha256=5UH8La8BM7f8SJmc4aq5yAZn4oxnF2JtVV2qiMlVchM,5746
346
360
  django_cfg/apps/payments/views/subscription_views.py,sha256=WqBDsaPUQGP6ZCmbheIdRupy-qESPpdj8IgKkaLp3V8,5005
347
361
  django_cfg/apps/payments/views/tariff_views.py,sha256=i0uOg6SBk_1sct2M2iwKMw-5YHMr5mhVvm_ljpFRwPQ,4907
362
+ django_cfg/apps/payments/views/webhook_views.py,sha256=s6CtRIW8leGDcaerMGjuH5ohV3dE0YMPcllmcRSv_p8,9616
348
363
  django_cfg/apps/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
349
364
  django_cfg/apps/support/admin.py,sha256=-fcegtqoCcwPiBXwyNLMftcYCTTbTRRBpWItyeNNkDY,8827
350
365
  django_cfg/apps/support/admin_filters.py,sha256=ZpKtetRxppRAMwIr-pwDbXAyh7qouDfTCEZoo1YJfFs,2179
@@ -394,15 +409,15 @@ django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html,sha256=Sxb7
394
409
  django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html,sha256=DeJjj3dxYcBEAj8Hv4Ii4koEMaNRVHta9_R25qZyK4w,6317
395
410
  django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html,sha256=Yd6SPgdQX1p_6miitu3nZHjdZOtbsXMhUP4DnXSntPs,1826
396
411
  django_cfg/apps/tasks/templates/tasks/components/workers_tab.html,sha256=4Ud4QpG6bnxBsrBDKGXdy4GcIne43wC13Ch1szZzrbo,1580
397
- django_cfg/cli/README.md,sha256=SgpceKVifp5AgvEeusOfRGRXe823jh1goHqOY0YQEGM,11661
412
+ django_cfg/cli/README.md,sha256=mbT1vqbeY_dYOjQGuZ_rjtMqUm-l76HH6oWQRq9ETmc,11665
398
413
  django_cfg/cli/__init__.py,sha256=i3ksFngCqZCBvaimQcBD1P2_gr5PiM--4efLScCjvvU,152
399
- django_cfg/cli/main.py,sha256=6PfG3ec2AmPHLmUGYc472CId1gs8cRKYrHcvd3ECPxU,998
400
- django_cfg/cli/utils.py,sha256=7Fr1abg5NOHcvp64WpL2HUdFmEMvwGLeQQi-Ysg1Cb4,5765
414
+ django_cfg/cli/main.py,sha256=ZxpP6YLhCFlF9tYSCwY4gkJ8thzQFrhsQAn0_C_7ehU,1004
415
+ django_cfg/cli/utils.py,sha256=YGXWw7MjX-zAUDKrbJ4q_sxH54at2Oqhrcm7udVozU4,5810
401
416
  django_cfg/cli/commands/__init__.py,sha256=EKLXDAx-QttnGmdjsmVANAfhxWplxl2V_2I0SZaJOoI,98
402
- django_cfg/cli/commands/create_project.py,sha256=iuf965j8Yg7zxHcPb0GtFHEj73CYXC45ZJRmd6RbA9E,21025
403
- django_cfg/cli/commands/info.py,sha256=o4S1xPJSHv2oEVqmH0X9RTF5f-8Wy9579yHkyd_PC3E,4923
417
+ django_cfg/cli/commands/create_project.py,sha256=8Jg4rfnGCINTd6ebBqx-WXG57AIB5C2yY5D3JQAtpyI,21029
418
+ django_cfg/cli/commands/info.py,sha256=AaLbFFOjHwqiIzZChPxfD3ASZZs1IAD-0RJQaLo2PC0,4925
404
419
  django_cfg/core/__init__.py,sha256=eVK57qFOok9kTeHoNEMQ1BplkUOaQ7NB9kP9eQK1vg0,358
405
- django_cfg/core/config.py,sha256=TS78BFOtzaErZMdEQgZvY2cnMq5PGaC74rOR8dttRuY,28404
420
+ django_cfg/core/config.py,sha256=y5die7kK06KcRk1VuxU8MFe16c6yAS_MfEAMqLePApI,28938
406
421
  django_cfg/core/environment.py,sha256=MAoEPqIPsLVhSANT2Bz4nnus2wmbMW0RCOQxhQfDrDc,9106
407
422
  django_cfg/core/exceptions.py,sha256=RTQEoU3PfR8lqqNNv5ayd_HY2yJLs3eioqUy8VM6AG4,10378
408
423
  django_cfg/core/generation.py,sha256=Oa9bnEPsxwEaa0RP71zNl_z2p9NNljHnoCTeRu72X-0,25421
@@ -451,12 +466,13 @@ django_cfg/models/jwt.py,sha256=3R_dpLmVZIcH4zdtwA4qKnuCB8RZQACrgsbbgWY2q4c,9025
451
466
  django_cfg/models/limits.py,sha256=nUfvyPykwKR38ZOlIFqlNGRmfV8RO5hiUrhDH6FCHJw,7449
452
467
  django_cfg/models/logging.py,sha256=4vZF-G9rPmXMxxtUx_ad7Esvgbe8a_5Dl692Yg0fL4A,10636
453
468
  django_cfg/models/ngrok.py,sha256=MVgcKWx0DRSW0QcwhiSx2vVwTSG49vbVrzPkZqDK-zw,3575
469
+ django_cfg/models/payments.py,sha256=kizcd5qztKtFdo1F1VYDa6nlvrh_SRhlVaPbF9D95PI,16435
454
470
  django_cfg/models/revolution.py,sha256=16fQ09iovrmlepNcTr2J0hZ-ShdMnMSQ2rTXa60yrus,8134
455
471
  django_cfg/models/security.py,sha256=Xv19ZVOIenB_-f0wB6fm-Ap4j9kA43bSFaT2XenpSqc,4685
456
472
  django_cfg/models/services.py,sha256=fj9JjrJFrlL4DMnMbx_D8JiiZpz4E5uBqmhquAxau7c,13159
457
- django_cfg/models/tasks.py,sha256=2T3apcUFf8zevYJmapbFrh6bWv5PTJPeXR6Bc5vlj4c,15524
473
+ django_cfg/models/tasks.py,sha256=zFvQaikXi-W-iN7eqR6ZGNiKJnPgOL3yl9RRis-5qZs,17160
458
474
  django_cfg/modules/__init__.py,sha256=Ip9WMpzImEwIAywpFwU056_v0O9oIGG7nCT1YSArxkw,316
459
- django_cfg/modules/base.py,sha256=ZFXqGPpZGvsVYp9Cc1aCpvMzGrEE9V2z9g50so2P5Nk,5736
475
+ django_cfg/modules/base.py,sha256=A7fAp3eEBbs9zxVq96k9FotWnqHqZA5b-kH9-hOJ1zo,5913
460
476
  django_cfg/modules/django_email.py,sha256=Kk2B1Y73xlbpNKCDkU2uBT01iVANjKpmVlKbRScVCs4,18059
461
477
  django_cfg/modules/django_health.py,sha256=7QzuQ6WyjWYj6lecd4auwRvEyrMUL7N6hiAp-tLyoY4,8923
462
478
  django_cfg/modules/django_logger.py,sha256=3oP9jev0lOcFUJ1tYcpbFnK524zIGA2xIOrrAiTwpb8,6331
@@ -465,11 +481,19 @@ django_cfg/modules/django_tasks.py,sha256=SBas2juL6RfDL7ttm4xAxJ7bvS052WmUzixNHP
465
481
  django_cfg/modules/django_telegram.py,sha256=qz3EOJnCR_YTJVIu2-Iq8--cla6mU-WPohquQ26eHDQ,16367
466
482
  django_cfg/modules/dramatiq_setup.py,sha256=Jke4aO_L1t6F3OAc4pl12zppKzL0gb1p6ilfQ3zUIZ8,454
467
483
  django_cfg/modules/logger.py,sha256=4_zeasNehr8LGz8r_ckv15-fQS63zCodiqD4CYIEyFI,10546
468
- django_cfg/modules/django_currency/README.md,sha256=Ox3jgRtsbOIaMuYDkIhrs9ijLGLbn-2R7mD9n2tjAVE,8512
469
- django_cfg/modules/django_currency/__init__.py,sha256=SLzzYkkqoz9EsspkzEK0yZ4_Q3JKmb3e_c1GfdYF3GY,1294
470
- django_cfg/modules/django_currency/cache.py,sha256=dlrIZN4_436DwTeChbuGOBEUHBobR3dFzCR0J32QN1E,15348
471
- django_cfg/modules/django_currency/converter.py,sha256=wC7N_vaxBrUY9jNQQHEsOfAIIvogM0HrPc0UuKOGf9g,11771
472
- django_cfg/modules/django_currency/service.py,sha256=bfUTbE4B2KoOcn77uF8EkXbvgEhsIW8opzYpT1ufC3U,9016
484
+ django_cfg/modules/django_currency/README.md,sha256=4R7KtF-rhR6yRg5jbsXwOVXMZNGEpOyW4N3WGN89W7A,4670
485
+ django_cfg/modules/django_currency/__init__.py,sha256=XDuqhE_HFENq0MmiJtLqsWHDqu_Qyphxc54D_-_LGXE,2306
486
+ django_cfg/modules/django_currency/clients/__init__.py,sha256=8wGiLU6xh1h0Z9eV7PHsAu0QS-jel8wmTauKW9Af3dI,220
487
+ django_cfg/modules/django_currency/clients/coingecko_client.py,sha256=w2GiDuKHItBdR69-ArHEJCD6K-OWwHFft9ZAZIbA5Gs,9396
488
+ django_cfg/modules/django_currency/clients/yfinance_client.py,sha256=98nVmwGL4-eOKZ1OLuuldu7DZK6tOcveFIE35zmtHV0,9671
489
+ django_cfg/modules/django_currency/core/__init__.py,sha256=rDsAAMMCozbP8C7fGK18l1_80Y6vkREu4kudTrRL_JU,729
490
+ django_cfg/modules/django_currency/core/converter.py,sha256=VUnfzuIei3hiKvc6EC4ya0aLW5tYhnex4yAYStNTv5A,5676
491
+ django_cfg/modules/django_currency/core/exceptions.py,sha256=Mx2zrqwtrw1LgpcFVAU7ofOfffSNsVjEGodrwbfPAtE,495
492
+ django_cfg/modules/django_currency/core/models.py,sha256=He50J10Z5kuAFAh-ptWsCKQ87hRsYHX2EhFdLNoYphs,1873
493
+ django_cfg/modules/django_currency/database/__init__.py,sha256=huog0oyosv8yif0yn94Ctt2Wad86ajmQyqsSl2EVQoI,536
494
+ django_cfg/modules/django_currency/database/database_loader.py,sha256=gNdtbW4pfZmHuURmSXWbHCIkY07yLRnAwqj7lQ6Ztp0,18925
495
+ django_cfg/modules/django_currency/utils/__init__.py,sha256=6nD3BGQrBn94ZqCCBG8X78KPuTmberoOauwNOUi3SUk,130
496
+ django_cfg/modules/django_currency/utils/cache.py,sha256=lkbkjtBpok-6UljoL8u3yWgyIaaayujlaPXiCamxGHE,2557
473
497
  django_cfg/modules/django_import_export/README.md,sha256=OuGT5gv0hwt3dcbMLfZUfostZnXALeN4OifgRvv--4k,2453
474
498
  django_cfg/modules/django_import_export/__init__.py,sha256=oJ9BDGdbQ_B8E2bGXxSQyRSzr8212rHGtgSLf9v6cAI,1908
475
499
  django_cfg/modules/django_llm/README.md,sha256=31uQG9_z-HroEUevtOPJbZ86H9yiwzZJs0omf-Kwh-o,9374
@@ -524,7 +548,7 @@ django_cfg/modules/django_unfold/models/dropdown.py,sha256=bbRYl0iuzBrwgmqUMTDw9
524
548
  django_cfg/modules/django_unfold/models/navigation.py,sha256=xrP2szoe1MSiTVAfc0Hd2dS32HhCp8XHBJinF5yc_U8,2575
525
549
  django_cfg/modules/django_unfold/models/tabs.py,sha256=AHV7lmaRTjOluf9mgZvXISG5D7Re1QPdU2v-iYoCaIQ,848
526
550
  django_cfg/registry/__init__.py,sha256=q6z9hGcBdtzbVLeDeQtP-A31z-1V7myZqjlZyTs1uo0,540
527
- django_cfg/registry/core.py,sha256=FGe86oEGm66fv9ypAEIFXP_XkFog1EaE5vYggALgQ_4,2703
551
+ django_cfg/registry/core.py,sha256=4zvppBabwUzHcBviFJcSQ8PH8kG5ypCUlavpFuhw2nw,3378
528
552
  django_cfg/registry/exceptions.py,sha256=b4pIakeRxhT1-ST3lbAnmAQaASRBARCoah_w6vb3VF0,399
529
553
  django_cfg/registry/modules.py,sha256=e8lCG5C-yhRgvs8El_-6Xbdrte-enZF_Xb3B4opO-Hs,1135
530
554
  django_cfg/registry/services.py,sha256=wpGSgSCUr4e9pUh5-rwN1AyPLGazK6KD-Ky4vz-elIw,1219
@@ -532,6 +556,8 @@ django_cfg/registry/third_party.py,sha256=3VPyh5XkHJr6uDNbpv04HutVSumoyo5jgB-zyq
532
556
  django_cfg/routing/__init__.py,sha256=zOg9yh2lP2NaxlnZpVH8IogQBHGlcky_C-n0VWD9LIc,277
533
557
  django_cfg/routing/callbacks.py,sha256=zMWD0AEE4AvczdBN-VDjgczai683ZSEqws0pnCVQ3FI,5994
534
558
  django_cfg/routing/routers.py,sha256=J89kcIArV2lSl3rzh61Rya0h-I5Zq7-QAat6PvmKVFs,1582
559
+ django_cfg/template_archive/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
560
+ django_cfg/template_archive/django_sample.zip,sha256=PXVnqBXeklWhzlYTmaJD4SKAVGL5Xv-XRJcRKMia_mo,1743331
535
561
  django_cfg/templates/__init__.py,sha256=IzLjt-a7VIJ0OutmAE1_-w0_LpL2u0MgGpnIabjZuW8,19
536
562
  django_cfg/templates/admin/index.html,sha256=kehH-W9fTTUo36G9X82vM7L3Mr_lTiMkfp0qxPJAaSg,1247
537
563
  django_cfg/templates/admin/components/action_grid.html,sha256=inffy-bMcuecSwgnR3HIEGE-r9wG_BgPttkvHqqFih8,3068
@@ -581,8 +607,8 @@ django_cfg/utils/path_resolution.py,sha256=C9As6p4Q9l3VeoVkFDRPQWGrzAWf8O8UxLVka
581
607
  django_cfg/utils/smart_defaults.py,sha256=MxbUZwn_xbh48li7uLI6W4D9WCD2P2WO48dv85Fra5E,23057
582
608
  django_cfg/utils/toolkit.py,sha256=Td8_iXNaftonF_xdZP4Y3uO65nuA_4_zditn5Q_Pfcw,23310
583
609
  django_cfg/utils/version_check.py,sha256=jI4v3YMdQriUEeb_TvRl511sDghy6I75iKRDUaNpucs,4800
584
- django_cfg-1.2.23.dist-info/METADATA,sha256=2qgEiOin5w8jT2vBv1cxqAPjKWYo0W3D3OEaXTCfqg0,38435
585
- django_cfg-1.2.23.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
586
- django_cfg-1.2.23.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
587
- django_cfg-1.2.23.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
588
- django_cfg-1.2.23.dist-info/RECORD,,
610
+ django_cfg-1.2.25.dist-info/METADATA,sha256=BdTGMuybzONnI4wgasiDKrh2rLicIVzeI9Rjira-_zg,38867
611
+ django_cfg-1.2.25.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
612
+ django_cfg-1.2.25.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
613
+ django_cfg-1.2.25.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
614
+ django_cfg-1.2.25.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- """
2
- Examples for Django Orchestrator.
3
- """
@@ -1,161 +0,0 @@
1
- """
2
- Simple example demonstrating Django Orchestrator usage.
3
- """
4
-
5
- import asyncio
6
- from dataclasses import dataclass
7
- from pydantic import BaseModel
8
- from django.contrib.auth.models import User
9
-
10
- from django_cfg.modules.django_orchestrator import DjangoAgent, SimpleOrchestrator, DjangoDeps, RunContext
11
-
12
-
13
- # Define output model
14
- class GreetingResult(BaseModel):
15
- """Result from greeting agent."""
16
- greeting: str
17
- personalized: bool
18
- user_info: str
19
-
20
-
21
- # Create agent
22
- greeting_agent = DjangoAgent[DjangoDeps, GreetingResult](
23
- name="greeting_agent",
24
- deps_type=DjangoDeps,
25
- output_type=GreetingResult,
26
- instructions="Generate personalized greetings for users"
27
- )
28
-
29
-
30
- # Add tools to agent
31
- @greeting_agent.tool
32
- async def get_user_info(ctx: RunContext[DjangoDeps]) -> str:
33
- """Get user information for personalization."""
34
- user = ctx.deps.user
35
- return f"User: {user.username}, Email: {user.email}, Joined: {user.date_joined}"
36
-
37
-
38
- @greeting_agent.tool
39
- async def get_time_of_day(ctx: RunContext[DjangoDeps]) -> str:
40
- """Get current time of day for greeting."""
41
- from datetime import datetime
42
- hour = datetime.now().hour
43
-
44
- if hour < 12:
45
- return "morning"
46
- elif hour < 17:
47
- return "afternoon"
48
- else:
49
- return "evening"
50
-
51
-
52
- async def simple_example():
53
- """Run simple orchestrator example."""
54
- print("🤖 Django Orchestrator Simple Example")
55
- print("=" * 50)
56
-
57
- # Create test user (in real app, get from request)
58
- try:
59
- user = await User.objects.aget(username='testuser')
60
- except User.DoesNotExist:
61
- user = await User.objects.acreate_user(
62
- username='testuser',
63
- email='test@example.com',
64
- first_name='Test',
65
- last_name='User'
66
- )
67
-
68
- # Create dependencies
69
- deps = DjangoDeps(user=user)
70
-
71
- # Create orchestrator
72
- orchestrator = SimpleOrchestrator()
73
- orchestrator.register_agent(greeting_agent)
74
-
75
- # Execute single agent
76
- print("\n1. Single Agent Execution:")
77
- results = await orchestrator.execute(
78
- pattern="sequential",
79
- agents=["greeting_agent"],
80
- prompt="Create a personalized greeting",
81
- deps=deps
82
- )
83
-
84
- result = results[0]
85
- print(f"✅ Agent: {result.agent_name}")
86
- print(f"✅ Output: {result.output}")
87
- print(f"✅ Execution Time: {result.execution_time:.2f}s")
88
- print(f"✅ Tokens Used: {result.tokens_used}")
89
-
90
- # Get metrics
91
- print("\n2. Agent Metrics:")
92
- metrics = greeting_agent.get_metrics()
93
- for key, value in metrics.items():
94
- print(f"📊 {key}: {value}")
95
-
96
- # Get orchestrator metrics
97
- print("\n3. Orchestrator Metrics:")
98
- orch_metrics = orchestrator.get_metrics()
99
- for key, value in orch_metrics.items():
100
- print(f"📈 {key}: {value}")
101
-
102
-
103
- async def multi_agent_example():
104
- """Run multi-agent orchestrator example."""
105
- print("\n🤖 Multi-Agent Example")
106
- print("=" * 30)
107
-
108
- # Create additional agents
109
- analyzer_agent = DjangoAgent[DjangoDeps, BaseModel](
110
- name="content_analyzer",
111
- deps_type=DjangoDeps,
112
- output_type=BaseModel,
113
- instructions="Analyze content sentiment and topics"
114
- )
115
-
116
- formatter_agent = DjangoAgent[DjangoDeps, BaseModel](
117
- name="content_formatter",
118
- deps_type=DjangoDeps,
119
- output_type=BaseModel,
120
- instructions="Format content for display"
121
- )
122
-
123
- # Create orchestrator
124
- orchestrator = SimpleOrchestrator()
125
- orchestrator.register_agent(analyzer_agent)
126
- orchestrator.register_agent(formatter_agent)
127
-
128
- # Get user
129
- user = await User.objects.aget(username='testuser')
130
- deps = DjangoDeps(user=user)
131
-
132
- # Execute sequential workflow
133
- print("\n1. Sequential Workflow:")
134
- results = await orchestrator.execute(
135
- pattern="sequential",
136
- agents=["content_analyzer", "content_formatter"],
137
- prompt="Analyze and format this content: Hello world!",
138
- deps=deps
139
- )
140
-
141
- for i, result in enumerate(results, 1):
142
- print(f"Step {i} - {result.agent_name}: {result.success}")
143
-
144
- # Execute parallel workflow
145
- print("\n2. Parallel Workflow:")
146
- results = await orchestrator.execute(
147
- pattern="parallel",
148
- agents=["content_analyzer", "content_formatter"],
149
- prompt="Process content in parallel",
150
- deps=deps,
151
- max_concurrent=2
152
- )
153
-
154
- successful = sum(1 for r in results if r.success)
155
- print(f"✅ {successful}/{len(results)} agents completed successfully")
156
-
157
-
158
- if __name__ == "__main__":
159
- # Run examples
160
- asyncio.run(simple_example())
161
- asyncio.run(multi_agent_example())
@@ -1,3 +0,0 @@
1
- """
2
- Examples for using the External Data system in django_cfg.apps.knowbase.
3
- """