django-cfg 1.3.11__py3-none-any.whl → 1.4.0__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 (439) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/accounts/admin/inlines.py +11 -5
  3. django_cfg/apps/accounts/admin/user_admin.py +39 -16
  4. django_cfg/apps/accounts/serializers/profile.py +1 -1
  5. django_cfg/apps/accounts/services/otp_service.py +18 -11
  6. django_cfg/apps/accounts/signals.py +15 -24
  7. django_cfg/apps/accounts/utils/notifications.py +217 -358
  8. django_cfg/apps/accounts/views/otp.py +2 -2
  9. django_cfg/apps/accounts/views/webhook.py +1 -1
  10. django_cfg/apps/agents/core/django_agent.py +1 -1
  11. django_cfg/apps/api/commands/views.py +66 -83
  12. django_cfg/apps/api/health/drf_views.py +269 -0
  13. django_cfg/apps/api/health/serializers.py +45 -0
  14. django_cfg/apps/api/health/urls.py +6 -1
  15. django_cfg/apps/knowbase/admin/actions/__init__.py +13 -0
  16. django_cfg/apps/knowbase/admin/actions/visibility_actions.py +56 -0
  17. django_cfg/apps/knowbase/admin/document_admin.py +136 -270
  18. django_cfg/apps/knowbase/admin/helpers/__init__.py +17 -0
  19. django_cfg/apps/knowbase/admin/helpers/configs.py +72 -0
  20. django_cfg/apps/knowbase/admin/helpers/display_helpers.py +156 -0
  21. django_cfg/apps/knowbase/admin/helpers/statistics.py +108 -0
  22. django_cfg/apps/knowbase/config/constance_fields.py +1 -1
  23. django_cfg/apps/knowbase/config/settings.py +2 -2
  24. django_cfg/apps/knowbase/mixins/__init__.py +19 -2
  25. django_cfg/apps/knowbase/mixins/config/__init__.py +14 -0
  26. django_cfg/apps/knowbase/mixins/config/defaults.py +75 -0
  27. django_cfg/apps/knowbase/mixins/config/meta_config.py +120 -0
  28. django_cfg/apps/knowbase/mixins/creator.py +10 -10
  29. django_cfg/apps/knowbase/mixins/external_data_mixin.py +105 -403
  30. django_cfg/apps/knowbase/mixins/generators/__init__.py +16 -0
  31. django_cfg/apps/knowbase/mixins/generators/content_generator.py +218 -0
  32. django_cfg/apps/knowbase/mixins/generators/field_analyzer.py +76 -0
  33. django_cfg/apps/knowbase/mixins/generators/metadata_generator.py +124 -0
  34. django_cfg/apps/knowbase/mixins/service.py +2 -2
  35. django_cfg/apps/knowbase/services/archive/__init__.py +1 -0
  36. django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +17 -0
  37. django_cfg/apps/knowbase/services/archive/analyzers/complexity_analyzer.py +33 -0
  38. django_cfg/apps/knowbase/services/archive/analyzers/purpose_detector.py +36 -0
  39. django_cfg/apps/knowbase/services/archive/analyzers/quality_analyzer.py +39 -0
  40. django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +103 -0
  41. django_cfg/apps/knowbase/services/archive/chunking/__init__.py +19 -0
  42. django_cfg/apps/knowbase/services/archive/chunking/base.py +81 -0
  43. django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +62 -0
  44. django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +107 -0
  45. django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +248 -0
  46. django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +70 -0
  47. django_cfg/apps/knowbase/services/archive/chunking_service.py +110 -729
  48. django_cfg/apps/knowbase/services/archive/context/__init__.py +14 -0
  49. django_cfg/apps/knowbase/services/archive/context/builders.py +220 -0
  50. django_cfg/apps/knowbase/services/archive/context/models.py +38 -0
  51. django_cfg/apps/knowbase/services/embedding/models.py +18 -14
  52. django_cfg/apps/knowbase/services/embedding/processors.py +6 -3
  53. django_cfg/apps/knowbase/tasks/document_processing.py +11 -3
  54. django_cfg/apps/leads/tests.py +1 -1
  55. django_cfg/apps/payments/admin/api_keys_admin.py +1 -1
  56. django_cfg/apps/payments/admin/balance_admin.py +1 -1
  57. django_cfg/apps/payments/admin/currencies_admin.py +1 -1
  58. django_cfg/apps/payments/admin/payments_admin.py +1 -1
  59. django_cfg/apps/payments/admin/subscriptions_admin.py +1 -1
  60. django_cfg/apps/payments/admin_interface/templates/payments/base.html +59 -126
  61. django_cfg/apps/payments/admin_interface/views/api/payments.py +1 -1
  62. django_cfg/apps/payments/admin_interface/views/api/stats.py +1 -1
  63. django_cfg/apps/payments/admin_interface/views/api/users.py +1 -1
  64. django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +1 -1
  65. django_cfg/apps/payments/admin_interface/views/api/webhook_public.py +1 -1
  66. django_cfg/apps/payments/admin_interface/views/base.py +29 -2
  67. django_cfg/apps/payments/apps.py +1 -1
  68. django_cfg/apps/payments/config/django_cfg_integration.py +2 -2
  69. django_cfg/apps/payments/config/helpers.py +3 -2
  70. django_cfg/apps/payments/management/commands/cleanup_expired_data.py +1 -1
  71. django_cfg/apps/payments/management/commands/currency_stats.py +1 -1
  72. django_cfg/apps/payments/management/commands/manage_currencies.py +1 -1
  73. django_cfg/apps/payments/management/commands/manage_providers.py +1 -1
  74. django_cfg/apps/payments/management/commands/process_pending_payments.py +1 -1
  75. django_cfg/apps/payments/management/commands/test_providers.py +1 -1
  76. django_cfg/apps/payments/middleware/api_access.py +1 -1
  77. django_cfg/apps/payments/middleware/rate_limiting.py +1 -1
  78. django_cfg/apps/payments/middleware/usage_tracking.py +1 -1
  79. django_cfg/apps/payments/models/balance.py +2 -2
  80. django_cfg/apps/payments/models/managers/api_key_managers.py +1 -1
  81. django_cfg/apps/payments/models/managers/balance_managers.py +1 -1
  82. django_cfg/apps/payments/models/managers/currency_managers.py +1 -1
  83. django_cfg/apps/payments/models/managers/payment_managers.py +1 -1
  84. django_cfg/apps/payments/models/managers/subscription_managers.py +1 -1
  85. django_cfg/apps/payments/models/payments.py +2 -2
  86. django_cfg/apps/payments/services/cache_service/__init__.py +1 -1
  87. django_cfg/apps/payments/services/cache_service/simple_cache.py +10 -5
  88. django_cfg/apps/payments/services/core/base.py +1 -1
  89. django_cfg/apps/payments/services/core/currency/__init__.py +13 -0
  90. django_cfg/apps/payments/services/core/currency/currency_converter.py +57 -0
  91. django_cfg/apps/payments/services/core/currency/currency_validator.py +61 -0
  92. django_cfg/apps/payments/services/core/operations/__init__.py +15 -0
  93. django_cfg/apps/payments/services/core/operations/payment_canceller.py +100 -0
  94. django_cfg/apps/payments/services/core/operations/payment_creator.py +196 -0
  95. django_cfg/apps/payments/services/core/operations/status_checker.py +100 -0
  96. django_cfg/apps/payments/services/core/payment_service.py +124 -612
  97. django_cfg/apps/payments/services/core/providers/__init__.py +13 -0
  98. django_cfg/apps/payments/services/core/providers/provider_client.py +132 -0
  99. django_cfg/apps/payments/services/core/providers/status_mapper.py +89 -0
  100. django_cfg/apps/payments/services/core/utils/__init__.py +13 -0
  101. django_cfg/apps/payments/services/core/utils/data_converter.py +48 -0
  102. django_cfg/apps/payments/services/core/utils/statistics_calculator.py +69 -0
  103. django_cfg/apps/payments/services/providers/base.py +1 -1
  104. django_cfg/apps/payments/services/providers/nowpayments/__init__.py +3 -3
  105. django_cfg/apps/payments/services/providers/nowpayments/parsers/__init__.py +9 -0
  106. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/__init__.py +23 -0
  107. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/constants.py +23 -0
  108. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/currency_names.py +244 -0
  109. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/patterns.py +511 -0
  110. django_cfg/apps/payments/services/providers/nowpayments/parsers/parser.py +168 -0
  111. django_cfg/apps/payments/services/providers/nowpayments/provider.py +1 -1
  112. django_cfg/apps/payments/services/providers/nowpayments/sync.py +1 -1
  113. django_cfg/apps/payments/services/providers/registry.py +1 -1
  114. django_cfg/apps/payments/services/providers/sync_service.py +1 -1
  115. django_cfg/apps/payments/signals/__init__.py +1 -1
  116. django_cfg/apps/payments/signals/api_key_signals.py +1 -1
  117. django_cfg/apps/payments/signals/balance_signals.py +1 -1
  118. django_cfg/apps/payments/signals/payment_signals.py +1 -1
  119. django_cfg/apps/payments/signals/subscription_signals.py +1 -1
  120. django_cfg/apps/payments/views/api/api_keys.py +1 -1
  121. django_cfg/apps/payments/views/api/balances.py +1 -1
  122. django_cfg/apps/payments/views/api/base.py +1 -1
  123. django_cfg/apps/payments/views/api/currencies.py +1 -1
  124. django_cfg/apps/payments/views/api/payments.py +1 -1
  125. django_cfg/apps/payments/views/api/subscriptions.py +1 -1
  126. django_cfg/apps/payments/views/api/webhooks.py +1 -1
  127. django_cfg/apps/payments/views/serializers/api_keys.py +1 -1
  128. django_cfg/apps/payments/views/serializers/balances.py +1 -1
  129. django_cfg/apps/payments/views/serializers/currencies.py +1 -1
  130. django_cfg/apps/payments/views/serializers/payments.py +1 -1
  131. django_cfg/apps/payments/views/serializers/subscriptions.py +1 -1
  132. django_cfg/apps/payments/views/serializers/webhooks.py +1 -1
  133. django_cfg/apps/support/admin/support_admin.py +21 -13
  134. django_cfg/apps/support/templates/support/chat/access_denied.html +21 -27
  135. django_cfg/apps/support/templates/support/chat/ticket_chat.html +183 -254
  136. django_cfg/apps/support/utils/support_email_service.py +1 -1
  137. django_cfg/apps/tasks/templates/tasks/layout/base.html +20 -115
  138. django_cfg/apps/tasks/utils/simulator.py +1 -1
  139. django_cfg/apps/tasks/views/dashboard.py +33 -3
  140. django_cfg/apps/urls.py +5 -1
  141. django_cfg/cli/README.md +57 -471
  142. django_cfg/cli/commands/create_project.py +140 -529
  143. django_cfg/cli/main.py +13 -10
  144. django_cfg/core/__init__.py +63 -6
  145. django_cfg/core/base/__init__.py +5 -0
  146. django_cfg/core/base/config_model.py +652 -0
  147. django_cfg/core/builders/__init__.py +11 -0
  148. django_cfg/core/builders/apps_builder.py +258 -0
  149. django_cfg/core/builders/middleware_builder.py +115 -0
  150. django_cfg/core/builders/security_builder.py +96 -0
  151. django_cfg/core/config.py +20 -892
  152. django_cfg/core/constants.py +69 -0
  153. django_cfg/core/environment/__init__.py +9 -0
  154. django_cfg/core/exceptions.py +45 -298
  155. django_cfg/core/generation/__init__.py +51 -0
  156. django_cfg/core/generation/core_generators/__init__.py +0 -0
  157. django_cfg/core/generation/core_generators/settings.py +90 -0
  158. django_cfg/core/generation/core_generators/static.py +82 -0
  159. django_cfg/core/generation/core_generators/templates.py +141 -0
  160. django_cfg/core/generation/data_generators/__init__.py +15 -0
  161. django_cfg/core/generation/data_generators/cache.py +132 -0
  162. django_cfg/core/generation/data_generators/database.py +117 -0
  163. django_cfg/core/generation/generation.py +92 -0
  164. django_cfg/core/generation/integration_generators/__init__.py +21 -0
  165. django_cfg/core/generation/integration_generators/api.py +237 -0
  166. django_cfg/core/generation/integration_generators/sessions.py +65 -0
  167. django_cfg/core/generation/integration_generators/tailwind.py +54 -0
  168. django_cfg/core/generation/integration_generators/tasks.py +92 -0
  169. django_cfg/core/generation/integration_generators/third_party.py +144 -0
  170. django_cfg/core/generation/orchestrator.py +285 -0
  171. django_cfg/core/generation/protocols.py +30 -0
  172. django_cfg/core/generation/security_generators/__init__.py +0 -0
  173. django_cfg/core/generation/utility_generators/__init__.py +24 -0
  174. django_cfg/core/generation/utility_generators/email.py +58 -0
  175. django_cfg/core/generation/utility_generators/i18n.py +66 -0
  176. django_cfg/core/generation/utility_generators/limits.py +58 -0
  177. django_cfg/core/generation/utility_generators/logging.py +66 -0
  178. django_cfg/core/generation/utility_generators/security.py +101 -0
  179. django_cfg/core/generation/utils/__init__.py +0 -0
  180. django_cfg/core/generation/utils/helpers.py +32 -0
  181. django_cfg/core/integration/__init__.py +18 -25
  182. django_cfg/core/integration/display/startup.py +146 -133
  183. django_cfg/core/integration/url_integration.py +13 -2
  184. django_cfg/core/services/__init__.py +5 -0
  185. django_cfg/core/services/config_service.py +121 -0
  186. django_cfg/core/state/__init__.py +9 -0
  187. django_cfg/core/state/registry.py +84 -0
  188. django_cfg/core/types/__init__.py +15 -0
  189. django_cfg/core/types/aliases.py +15 -0
  190. django_cfg/core/types/enums.py +49 -0
  191. django_cfg/dashboard/DEBUG_README.md +105 -0
  192. django_cfg/dashboard/REFACTORING_SUMMARY.md +237 -0
  193. django_cfg/dashboard/__init__.py +24 -0
  194. django_cfg/dashboard/components.py +308 -0
  195. django_cfg/dashboard/debug.py +176 -0
  196. django_cfg/dashboard/management/__init__.py +0 -0
  197. django_cfg/dashboard/management/commands/__init__.py +0 -0
  198. django_cfg/dashboard/management/commands/debug_dashboard.py +109 -0
  199. django_cfg/dashboard/sections/__init__.py +1 -0
  200. django_cfg/dashboard/sections/base.py +128 -0
  201. django_cfg/dashboard/sections/commands.py +32 -0
  202. django_cfg/dashboard/sections/overview.py +394 -0
  203. django_cfg/dashboard/sections/stats.py +48 -0
  204. django_cfg/dashboard/sections/system.py +73 -0
  205. django_cfg/management/commands/check_settings.py +6 -2
  206. django_cfg/management/commands/clear_constance.py +6 -1
  207. django_cfg/management/commands/create_token.py +5 -4
  208. django_cfg/management/commands/generate.py +5 -0
  209. django_cfg/management/commands/list_urls.py +7 -2
  210. django_cfg/management/commands/migrate_all.py +6 -2
  211. django_cfg/management/commands/migrator.py +6 -1
  212. django_cfg/management/commands/rundramatiq.py +6 -1
  213. django_cfg/management/commands/rundramatiq_simulator.py +11 -4
  214. django_cfg/management/commands/runserver_ngrok.py +9 -7
  215. django_cfg/management/commands/script.py +25 -21
  216. django_cfg/management/commands/show_config.py +6 -1
  217. django_cfg/management/commands/show_urls.py +8 -3
  218. django_cfg/management/commands/superuser.py +5 -4
  219. django_cfg/management/commands/task_clear.py +8 -3
  220. django_cfg/management/commands/task_status.py +8 -3
  221. django_cfg/management/commands/test_email.py +6 -1
  222. django_cfg/management/commands/test_telegram.py +6 -1
  223. django_cfg/management/commands/test_twilio.py +6 -1
  224. django_cfg/management/commands/tree.py +7 -4
  225. django_cfg/models/__init__.py +88 -3
  226. django_cfg/models/api/__init__.py +27 -0
  227. django_cfg/models/{api.py → api/config.py} +1 -1
  228. django_cfg/models/api/drf/__init__.py +21 -0
  229. django_cfg/models/api/drf/config.py +101 -0
  230. django_cfg/models/api/drf/redoc.py +31 -0
  231. django_cfg/models/api/drf/spectacular.py +129 -0
  232. django_cfg/models/api/drf/swagger.py +59 -0
  233. django_cfg/models/{api_keys.py → api/keys.py} +16 -6
  234. django_cfg/models/{limits.py → api/limits.py} +0 -1
  235. django_cfg/models/base/__init__.py +14 -0
  236. django_cfg/models/django/__init__.py +16 -0
  237. django_cfg/models/{constance.py → django/constance.py} +1 -1
  238. django_cfg/models/{environment.py → django/environment.py} +1 -1
  239. django_cfg/models/infrastructure/__init__.py +17 -0
  240. django_cfg/models/{cache.py → infrastructure/cache.py} +3 -2
  241. django_cfg/models/infrastructure/database/__init__.py +22 -0
  242. django_cfg/models/infrastructure/database/config.py +265 -0
  243. django_cfg/models/infrastructure/database/converters.py +91 -0
  244. django_cfg/models/infrastructure/database/parsers.py +96 -0
  245. django_cfg/models/infrastructure/database/routing.py +85 -0
  246. django_cfg/models/infrastructure/database/validators.py +170 -0
  247. django_cfg/models/{logging.py → infrastructure/logging.py} +1 -1
  248. django_cfg/models/{security.py → infrastructure/security.py} +2 -2
  249. django_cfg/models/ngrok/__init__.py +11 -0
  250. django_cfg/models/ngrok/auth.py +37 -0
  251. django_cfg/models/ngrok/config.py +77 -0
  252. django_cfg/models/ngrok/tunnel.py +35 -0
  253. django_cfg/models/payments/__init__.py +20 -0
  254. django_cfg/models/payments/api_keys.py +57 -0
  255. django_cfg/models/{payments.py → payments/config.py} +56 -154
  256. django_cfg/models/payments/providers/__init__.py +15 -0
  257. django_cfg/models/payments/providers/base.py +25 -0
  258. django_cfg/models/payments/providers/nowpayments.py +48 -0
  259. django_cfg/models/services/__init__.py +18 -0
  260. django_cfg/models/services/base.py +65 -0
  261. django_cfg/models/{email.py → services/email.py} +1 -1
  262. django_cfg/models/services/telegram.py +172 -0
  263. django_cfg/models/tasks/__init__.py +51 -0
  264. django_cfg/models/tasks/backends.py +250 -0
  265. django_cfg/models/tasks/config.py +314 -0
  266. django_cfg/models/tasks/utils.py +174 -0
  267. django_cfg/modules/base.py +18 -3
  268. django_cfg/modules/django_admin/decorators/actions.py +1 -1
  269. django_cfg/modules/django_admin/decorators/display.py +1 -1
  270. django_cfg/modules/django_admin/mixins/standalone_actions_mixin.py +1 -1
  271. django_cfg/modules/django_cfg_rpc_client/README.md +346 -0
  272. django_cfg/modules/django_cfg_rpc_client/__init__.py +51 -0
  273. django_cfg/modules/django_cfg_rpc_client/client.py +540 -0
  274. django_cfg/modules/django_cfg_rpc_client/config.py +207 -0
  275. django_cfg/modules/django_cfg_rpc_client/dashboard/README.md +517 -0
  276. django_cfg/modules/django_cfg_rpc_client/dashboard/UNFOLD_INTEGRATION.md +439 -0
  277. django_cfg/modules/django_cfg_rpc_client/dashboard/__init__.py +11 -0
  278. django_cfg/modules/django_cfg_rpc_client/dashboard/apps.py +22 -0
  279. django_cfg/modules/django_cfg_rpc_client/dashboard/monitor.py +435 -0
  280. django_cfg/modules/django_cfg_rpc_client/dashboard/static/django_cfg_rpc_dashboard/js/dashboard.js +373 -0
  281. django_cfg/modules/django_cfg_rpc_client/dashboard/templates/django_cfg_rpc_dashboard/base.html +76 -0
  282. django_cfg/modules/django_cfg_rpc_client/dashboard/templates/django_cfg_rpc_dashboard/dashboard.html +200 -0
  283. django_cfg/modules/django_cfg_rpc_client/dashboard/urls.py +22 -0
  284. django_cfg/modules/django_cfg_rpc_client/dashboard/urls_admin.py +9 -0
  285. django_cfg/modules/django_cfg_rpc_client/dashboard/views.py +251 -0
  286. django_cfg/modules/django_cfg_rpc_client/exceptions.py +201 -0
  287. django_cfg/modules/django_drf_theme/CHANGELOG.md +210 -0
  288. django_cfg/modules/django_drf_theme/EXAMPLE.md +465 -0
  289. django_cfg/modules/django_drf_theme/IMPLEMENTATION.md +232 -0
  290. django_cfg/modules/django_drf_theme/README.md +207 -0
  291. django_cfg/modules/django_drf_theme/TAILWIND_CDN_GUIDE.md +274 -0
  292. django_cfg/modules/django_drf_theme/__init__.py +23 -0
  293. django_cfg/modules/django_drf_theme/apps.py +15 -0
  294. django_cfg/modules/django_drf_theme/renderers.py +58 -0
  295. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/api.html +375 -0
  296. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/base.html +938 -0
  297. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/filter_form.html +132 -0
  298. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/raw_data_form.html +123 -0
  299. django_cfg/modules/django_drf_theme/templatetags/__init__.py +1 -0
  300. django_cfg/modules/django_drf_theme/templatetags/tailwind_tags.py +57 -0
  301. django_cfg/modules/django_email/__init__.py +14 -0
  302. django_cfg/modules/{django_email.py → django_email/service.py} +78 -113
  303. django_cfg/modules/django_email/utils.py +40 -0
  304. django_cfg/modules/django_health/__init__.py +9 -0
  305. django_cfg/modules/{django_health.py → django_health/service.py} +23 -21
  306. django_cfg/modules/django_llm/llm/client.py +155 -550
  307. django_cfg/modules/django_llm/llm/embeddings/__init__.py +13 -0
  308. django_cfg/modules/django_llm/llm/embeddings/mock_embedder.py +106 -0
  309. django_cfg/modules/django_llm/llm/embeddings/openai_embedder.py +79 -0
  310. django_cfg/modules/django_llm/llm/models_api/__init__.py +9 -0
  311. django_cfg/modules/django_llm/llm/models_api/models_query.py +163 -0
  312. django_cfg/modules/django_llm/llm/providers/__init__.py +15 -0
  313. django_cfg/modules/django_llm/llm/providers/config_builder.py +103 -0
  314. django_cfg/modules/django_llm/llm/providers/provider_manager.py +148 -0
  315. django_cfg/modules/django_llm/llm/providers/provider_selector.py +60 -0
  316. django_cfg/modules/django_llm/llm/requests/__init__.py +15 -0
  317. django_cfg/modules/django_llm/llm/requests/cache_manager.py +170 -0
  318. django_cfg/modules/django_llm/llm/requests/chat_handler.py +199 -0
  319. django_cfg/modules/django_llm/llm/requests/embedding_handler.py +113 -0
  320. django_cfg/modules/django_llm/llm/responses/__init__.py +9 -0
  321. django_cfg/modules/django_llm/llm/responses/response_builder.py +131 -0
  322. django_cfg/modules/django_llm/llm/stats/__init__.py +9 -0
  323. django_cfg/modules/django_llm/llm/stats/stats_manager.py +107 -0
  324. django_cfg/modules/django_llm/translator/detectors/__init__.py +13 -0
  325. django_cfg/modules/django_llm/translator/detectors/language_detector.py +90 -0
  326. django_cfg/modules/django_llm/translator/detectors/script_detector.py +153 -0
  327. django_cfg/modules/django_llm/translator/stats/__init__.py +11 -0
  328. django_cfg/modules/django_llm/translator/stats/stats_tracker.py +85 -0
  329. django_cfg/modules/django_llm/translator/translator.py +150 -603
  330. django_cfg/modules/django_llm/translator/translators/__init__.py +15 -0
  331. django_cfg/modules/django_llm/translator/translators/json_translator.py +316 -0
  332. django_cfg/modules/django_llm/translator/translators/text_translator.py +139 -0
  333. django_cfg/modules/django_llm/translator/utils/__init__.py +13 -0
  334. django_cfg/modules/django_llm/translator/utils/prompt_builder.py +110 -0
  335. django_cfg/modules/django_llm/translator/utils/text_utils.py +114 -0
  336. django_cfg/modules/django_logging/FIXES_SUMMARY.md +276 -0
  337. django_cfg/modules/django_logging/LOGGING_GUIDE.md +504 -0
  338. django_cfg/modules/django_logging/__init__.py +14 -0
  339. django_cfg/modules/{django_logger.py → django_logging/django_logger.py} +13 -13
  340. django_cfg/modules/{logger.py → django_logging/logger.py} +14 -4
  341. django_cfg/modules/django_ngrok/__init__.py +39 -0
  342. django_cfg/modules/{django_ngrok.py → django_ngrok/service.py} +14 -42
  343. django_cfg/modules/django_rpc_old/POETRY.md +344 -0
  344. django_cfg/modules/django_rpc_old/README.md +397 -0
  345. django_cfg/modules/django_rpc_old/TESTING.md +358 -0
  346. django_cfg/modules/django_rpc_old/__init__.py +39 -0
  347. django_cfg/modules/django_rpc_old/client.py +531 -0
  348. django_cfg/modules/django_rpc_old/config.py +279 -0
  349. django_cfg/modules/django_rpc_old/exceptions.py +172 -0
  350. django_cfg/modules/django_tailwind/README.md +478 -0
  351. django_cfg/modules/django_tailwind/__init__.py +7 -0
  352. django_cfg/modules/django_tailwind/apps.py +10 -0
  353. django_cfg/modules/django_tailwind/templates/django_tailwind/app.html +5 -0
  354. django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +117 -0
  355. django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +124 -0
  356. django_cfg/modules/django_tailwind/templates/django_tailwind/components/theme_toggle.html +54 -0
  357. django_cfg/modules/django_tailwind/templates/django_tailwind/components/user_menu.html +116 -0
  358. django_cfg/modules/django_tailwind/templates/django_tailwind/simple.html +46 -0
  359. django_cfg/modules/django_tailwind/templatetags/__init__.py +1 -0
  360. django_cfg/modules/django_tailwind/templatetags/tailwind_info.py +185 -0
  361. django_cfg/modules/django_tasks/__init__.py +29 -0
  362. django_cfg/modules/django_tasks/factory.py +127 -0
  363. django_cfg/modules/{django_tasks.py → django_tasks/service.py} +45 -274
  364. django_cfg/modules/django_tasks/settings.py +107 -0
  365. django_cfg/modules/django_telegram/__init__.py +29 -0
  366. django_cfg/modules/{django_telegram.py → django_telegram/service.py} +45 -113
  367. django_cfg/modules/django_telegram/utils.py +62 -0
  368. django_cfg/modules/django_twilio/__init__.py +54 -107
  369. django_cfg/modules/django_twilio/_imports.py +30 -0
  370. django_cfg/modules/django_twilio/base.py +192 -0
  371. django_cfg/modules/django_twilio/email_otp.py +227 -0
  372. django_cfg/modules/django_twilio/sendgrid_service.py +1 -1
  373. django_cfg/modules/django_twilio/simple_service.py +1 -2
  374. django_cfg/modules/django_twilio/sms.py +94 -0
  375. django_cfg/modules/django_twilio/twilio_service.py +2 -3
  376. django_cfg/modules/django_twilio/unified.py +310 -0
  377. django_cfg/modules/django_twilio/utils.py +190 -0
  378. django_cfg/modules/django_twilio/whatsapp.py +137 -0
  379. django_cfg/modules/django_unfold/callbacks/base.py +198 -7
  380. django_cfg/modules/django_unfold/callbacks/main.py +102 -10
  381. django_cfg/modules/django_unfold/dashboard.py +65 -43
  382. django_cfg/modules/django_unfold/models/config.py +13 -12
  383. django_cfg/modules/django_unfold/models/navigation.py +8 -3
  384. django_cfg/modules/django_unfold/models/tabs.py +2 -2
  385. django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +102 -0
  386. django_cfg/registry/core.py +24 -26
  387. django_cfg/registry/modules.py +5 -2
  388. django_cfg/registry/services.py +20 -3
  389. django_cfg/registry/third_party.py +8 -8
  390. django_cfg/static/admin/css/dashboard.css +260 -0
  391. django_cfg/static/admin/js/commands.js +171 -0
  392. django_cfg/static/admin/js/dashboard.js +126 -0
  393. django_cfg/templates/admin/components/management_commands.js +375 -0
  394. django_cfg/templates/admin/components/progress_bar.html +18 -23
  395. django_cfg/templates/admin/index.html +48 -20
  396. django_cfg/templates/admin/index_new.html +106 -0
  397. django_cfg/templates/admin/layouts/base_dashboard.html +60 -0
  398. django_cfg/templates/admin/layouts/dashboard_with_tabs.html +1 -20
  399. django_cfg/templates/admin/sections/commands_section.html +626 -0
  400. django_cfg/templates/admin/sections/overview_section.html +112 -0
  401. django_cfg/templates/admin/sections/stats_section.html +35 -0
  402. django_cfg/templates/admin/sections/system_section.html +99 -0
  403. django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md +322 -0
  404. django_cfg/templates/admin/snippets/components/activity_tracker.html +85 -47
  405. django_cfg/templates/admin/snippets/components/charts_section.html +154 -64
  406. django_cfg/templates/admin/snippets/components/django_commands.html +3 -3
  407. django_cfg/templates/admin/snippets/components/recent_activity_improved.html +25 -0
  408. django_cfg/templates/admin/snippets/components/recent_users_table.html +1 -1
  409. django_cfg/templates/admin/snippets/components/system_metrics.html +179 -93
  410. django_cfg/templates/admin/snippets/zones/zones_table.html +2 -2
  411. django_cfg/templatetags/django_cfg.py +7 -1
  412. django_cfg/utils/smart_defaults.py +4 -4
  413. django_cfg-1.4.0.dist-info/METADATA +920 -0
  414. {django_cfg-1.3.11.dist-info → django_cfg-1.4.0.dist-info}/RECORD +425 -196
  415. django_cfg/apps/accounts/utils/auth_email_service.py +0 -84
  416. django_cfg/apps/payments/services/providers/nowpayments/parsers.py +0 -879
  417. django_cfg/core/generation.py +0 -621
  418. django_cfg/management/commands/validate_config.py +0 -189
  419. django_cfg/models/database.py +0 -480
  420. django_cfg/models/drf.py +0 -272
  421. django_cfg/models/ngrok.py +0 -122
  422. django_cfg/models/services.py +0 -440
  423. django_cfg/models/tasks.py +0 -550
  424. django_cfg/modules/django_twilio/service.py +0 -942
  425. django_cfg/template_archive/django_sample.zip +0 -0
  426. django_cfg/templates/rest_framework/api.html +0 -12
  427. django_cfg/utils/toolkit.py +0 -703
  428. django_cfg-1.3.11.dist-info/METADATA +0 -1029
  429. /django_cfg/apps/accounts/management/commands/{test_otp.py → otp_test.py} +0 -0
  430. /django_cfg/core/{environment.py → environment/detector.py} +0 -0
  431. /django_cfg/models/{cors.py → api/cors.py} +0 -0
  432. /django_cfg/models/{jwt.py → api/jwt.py} +0 -0
  433. /django_cfg/models/{base.py → base/config.py} +0 -0
  434. /django_cfg/models/{cfg.py → base/module.py} +0 -0
  435. /django_cfg/models/{revolution.py → django/revolution.py} +0 -0
  436. /django_cfg/modules/{dramatiq_setup.py → django_tasks/dramatiq_setup.py} +0 -0
  437. {django_cfg-1.3.11.dist-info → django_cfg-1.4.0.dist-info}/WHEEL +0 -0
  438. {django_cfg-1.3.11.dist-info → django_cfg-1.4.0.dist-info}/entry_points.txt +0 -0
  439. {django_cfg-1.3.11.dist-info → django_cfg-1.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,879 +0,0 @@
1
- """
2
- NowPayments currency parsers.
3
-
4
- Handles parsing and normalization of NowPayments currency data.
5
- """
6
-
7
- from typing import Optional, Dict, Any, List
8
- from django_cfg.modules.django_logger import get_logger
9
-
10
- logger = get_logger("nowpayments_parsers")
11
-
12
-
13
- class NowPaymentsCurrencyParser:
14
- """Parser for NowPayments currency data."""
15
-
16
- def __init__(self):
17
- """Initialize currency parser."""
18
- self.precise_patterns = self._get_precise_patterns()
19
- self.fallback_patterns = self._get_fallback_patterns()
20
- self.provider_code_patterns = self._get_provider_code_patterns()
21
- self.network_suffixes = self._get_network_suffixes()
22
-
23
- def parse_currency_code(
24
- self,
25
- provider_code: str,
26
- currency_name: str,
27
- network_code: Optional[str] = None,
28
- ticker: str = ''
29
- ) -> tuple[str, Optional[str]]:
30
- """
31
- Smart parsing using API data, prioritizing ticker field.
32
-
33
- Uses ticker as primary source for base currency, then falls back to name parsing.
34
-
35
- Examples:
36
- - "1INCHBSC", "1Inch Network (BSC)", "bsc", "1inch" → ("1INCH", "bsc")
37
- - "USDTERC20", "Tether USD (ERC-20)", "eth", "usdt" → ("USDT", "eth")
38
- - "BTC", "Bitcoin", "btc", "btc" → ("BTC", "btc")
39
- """
40
- # Skip currencies with empty network - they are duplicates
41
- if network_code is not None and network_code.strip() == "":
42
- return None, None # Skip this currency
43
-
44
- # Priority 1: Use ticker if available and meaningful
45
- if ticker and len(ticker.strip()) > 0:
46
- base_currency = ticker.upper().strip()
47
- return base_currency, network_code
48
-
49
- # Priority 2: Extract from provider code patterns
50
- base_currency = self.extract_base_currency_from_provider_code(provider_code)
51
- if base_currency != provider_code:
52
- return base_currency, network_code
53
-
54
- # Priority 3: Extract from name using patterns
55
- base_currency = self.extract_base_currency_from_name(currency_name, provider_code)
56
- return base_currency, network_code
57
-
58
- def extract_base_currency_from_name(self, currency_name: str, fallback_code: str) -> str:
59
- """Extract base currency from human-readable name using real API patterns."""
60
- if not currency_name:
61
- return fallback_code
62
-
63
- name_lower = currency_name.lower()
64
-
65
- # Check precise patterns first (most reliable)
66
- for pattern, base in self.precise_patterns.items():
67
- if pattern in name_lower:
68
- return base
69
-
70
- # Fallback patterns for edge cases
71
- for pattern, base in self.fallback_patterns.items():
72
- if pattern in name_lower:
73
- return base
74
-
75
- # Last resort: use the provider code as-is
76
- return fallback_code
77
-
78
- def extract_base_currency_from_provider_code(self, provider_code: str) -> str:
79
- """Extract base currency from NowPayments provider code patterns."""
80
- if not provider_code:
81
- return provider_code
82
-
83
- code_upper = provider_code.upper()
84
-
85
- # Check exact matches first
86
- if code_upper in self.provider_code_patterns:
87
- return self.provider_code_patterns[code_upper]
88
-
89
- # Pattern matching for common suffixes
90
- for suffix in self.network_suffixes:
91
- if code_upper.endswith(suffix):
92
- base_part = code_upper[:-len(suffix)]
93
- if len(base_part) >= 2: # Ensure we have a meaningful base
94
- return base_part
95
-
96
- # Return original if no pattern matches
97
- return provider_code
98
-
99
- def generate_currency_name(
100
- self,
101
- base_currency_code: str,
102
- network_code: Optional[str],
103
- original_name: str
104
- ) -> str:
105
- """Generate proper currency name based on base currency and network."""
106
-
107
- # Base currency display names
108
- base_names = {
109
- 'BTC': 'Bitcoin',
110
- 'ETH': 'Ethereum',
111
- 'USDT': 'Tether USD',
112
- 'USDC': 'USD Coin',
113
- 'BNB': 'Binance Coin',
114
- 'ADA': 'Cardano',
115
- 'DOT': 'Polkadot',
116
- 'MATIC': 'Polygon',
117
- 'AVAX': 'Avalanche',
118
- 'SOL': 'Solana',
119
- 'LTC': 'Litecoin',
120
- 'BCH': 'Bitcoin Cash',
121
- 'XRP': 'Ripple',
122
- 'DOGE': 'Dogecoin',
123
- 'ATOM': 'Cosmos',
124
- 'LINK': 'Chainlink',
125
- 'UNI': 'Uniswap',
126
- 'AAVE': 'Aave',
127
- 'COMP': 'Compound',
128
- 'MKR': 'Maker',
129
- 'SNX': 'Synthetix',
130
- 'YFI': 'yearn.finance',
131
- 'SUSHI': 'SushiSwap',
132
- 'CRV': 'Curve DAO Token',
133
- 'BAL': 'Balancer',
134
- 'REN': 'Ren',
135
- 'KNC': 'Kyber Network',
136
- 'ZRX': '0x',
137
- 'BAT': 'Basic Attention Token',
138
- 'ENJ': 'Enjin Coin',
139
- 'MANA': 'Decentraland',
140
- 'SAND': 'The Sandbox',
141
- 'AXS': 'Axie Infinity',
142
- 'FTM': 'Fantom',
143
- 'ONE': 'Harmony',
144
- 'NEAR': 'NEAR Protocol',
145
- 'ALGO': 'Algorand',
146
- 'XTZ': 'Tezos',
147
- 'EOS': 'EOS',
148
- 'TRX': 'TRON',
149
- 'VET': 'VeChain',
150
- 'THETA': 'Theta Network',
151
- 'FIL': 'Filecoin',
152
- 'ICP': 'Internet Computer',
153
- 'HBAR': 'Hedera',
154
- 'EGLD': 'MultiversX',
155
- 'FLOW': 'Flow',
156
- 'XLM': 'Stellar',
157
- 'IOTA': 'IOTA',
158
- 'XMR': 'Monero',
159
- 'ZEC': 'Zcash',
160
- 'DASH': 'Dash',
161
- 'ETC': 'Ethereum Classic',
162
- 'BSV': 'Bitcoin SV',
163
- 'NEO': 'Neo',
164
- 'QTUM': 'Qtum',
165
- 'ZIL': 'Zilliqa',
166
- 'ONT': 'Ontology',
167
- 'ICX': 'ICON',
168
- 'WAVES': 'Waves',
169
- 'LSK': 'Lisk',
170
- 'NANO': 'Nano',
171
- 'DGB': 'DigiByte',
172
- 'RVN': 'Ravencoin',
173
- 'SC': 'Siacoin',
174
- 'DCR': 'Decred',
175
- 'ZEN': 'Horizen',
176
- 'KMD': 'Komodo',
177
- 'STRAT': 'Stratis',
178
- 'ARK': 'Ark',
179
- 'NXT': 'Nxt',
180
- 'BTS': 'BitShares',
181
- 'STEEM': 'Steem',
182
- 'SBD': 'Steem Dollars',
183
- 'GNT': 'Golem',
184
- 'REP': 'Augur',
185
- 'CVC': 'Civic',
186
- 'STORJ': 'Storj',
187
- 'FUN': 'FunFair',
188
- 'DNT': 'district0x',
189
- 'MCO': 'Monaco',
190
- 'MTL': 'Metal',
191
- 'PAY': 'TenX',
192
- 'REQ': 'Request Network',
193
- 'SALT': 'SALT',
194
- 'SUB': 'Substratum',
195
- 'POWR': 'Power Ledger',
196
- 'ENG': 'Enigma',
197
- 'BNT': 'Bancor',
198
- 'FUEL': 'Etherparty',
199
- 'MAID': 'MaidSafeCoin',
200
- 'AMP': 'Synereo',
201
- 'XAS': 'Asch',
202
- 'PPT': 'Populous',
203
- 'PART': 'Particl',
204
- 'CLOAK': 'CloakCoin',
205
- 'BLOCK': 'Blocknet',
206
- 'NAV': 'NavCoin',
207
- 'VIBE': 'VIBE',
208
- 'LUN': 'Lunyr',
209
- 'KIN': 'Kin',
210
- 'TUSD': 'TrueUSD',
211
- 'PAX': 'Paxos Standard',
212
- 'GUSD': 'Gemini Dollar',
213
- 'HUSD': 'HUSD',
214
- 'BUSD': 'Binance USD',
215
- 'DAI': 'Dai Stablecoin',
216
- 'FRAX': 'Frax',
217
- 'LUSD': 'Liquity USD',
218
- 'SUSD': 'sUSD',
219
- 'USDN': 'Neutrino USD',
220
- 'RSR': 'Reserve Rights',
221
- 'AMPL': 'Ampleforth',
222
- 'TRIBE': 'Tribe',
223
- 'FEI': 'Fei USD',
224
- }
225
-
226
- # Network display names
227
- network_names = {
228
- 'eth': 'Ethereum',
229
- 'bsc': 'Binance Smart Chain',
230
- 'matic': 'Polygon',
231
- 'arbitrum': 'Arbitrum',
232
- 'optimism': 'Optimism',
233
- 'avalanche': 'Avalanche',
234
- 'fantom': 'Fantom',
235
- 'harmony': 'Harmony',
236
- 'moonbeam': 'Moonbeam',
237
- 'moonriver': 'Moonriver',
238
- 'celo': 'Celo',
239
- 'gnosis': 'Gnosis Chain',
240
- 'aurora': 'Aurora',
241
- 'cronos': 'Cronos',
242
- 'evmos': 'Evmos',
243
- 'milkomeda': 'Milkomeda',
244
- 'syscoin': 'Syscoin NEVM',
245
- 'metis': 'Metis',
246
- 'boba': 'Boba Network',
247
- 'fuse': 'Fuse',
248
- 'telos': 'Telos EVM',
249
- 'kcc': 'KuCoin Community Chain',
250
- 'heco': 'Huobi ECO Chain',
251
- 'okexchain': 'OKEx Chain',
252
- 'xdai': 'xDai',
253
- 'tron': 'TRON',
254
- 'trx': 'TRON',
255
- 'solana': 'Solana',
256
- 'sol': 'Solana',
257
- 'near': 'NEAR Protocol',
258
- 'algorand': 'Algorand',
259
- 'algo': 'Algorand',
260
- 'cardano': 'Cardano',
261
- 'ada': 'Cardano',
262
- 'polkadot': 'Polkadot',
263
- 'dot': 'Polkadot',
264
- 'kusama': 'Kusama',
265
- 'ksm': 'Kusama',
266
- 'cosmos': 'Cosmos Hub',
267
- 'atom': 'Cosmos Hub',
268
- 'osmosis': 'Osmosis',
269
- 'osmo': 'Osmosis',
270
- 'terra': 'Terra',
271
- 'luna': 'Terra',
272
- 'avalanche': 'Avalanche C-Chain',
273
- 'avax': 'Avalanche C-Chain',
274
- 'bitcoin': 'Bitcoin',
275
- 'btc': 'Bitcoin',
276
- 'litecoin': 'Litecoin',
277
- 'ltc': 'Litecoin',
278
- 'bitcoincash': 'Bitcoin Cash',
279
- 'bch': 'Bitcoin Cash',
280
- 'dogecoin': 'Dogecoin',
281
- 'doge': 'Dogecoin',
282
- 'zcash': 'Zcash',
283
- 'zec': 'Zcash',
284
- 'monero': 'Monero',
285
- 'xmr': 'Monero',
286
- 'dash': 'Dash',
287
- 'stellar': 'Stellar',
288
- 'xlm': 'Stellar',
289
- 'ripple': 'Ripple',
290
- 'xrp': 'Ripple',
291
- 'eos': 'EOS',
292
- 'tezos': 'Tezos',
293
- 'xtz': 'Tezos',
294
- 'iota': 'IOTA',
295
- 'miota': 'IOTA',
296
- 'neo': 'Neo',
297
- 'waves': 'Waves',
298
- 'lisk': 'Lisk',
299
- 'lsk': 'Lisk',
300
- 'nano': 'Nano',
301
- 'digibyte': 'DigiByte',
302
- 'dgb': 'DigiByte',
303
- 'ravencoin': 'Ravencoin',
304
- 'rvn': 'Ravencoin',
305
- 'siacoin': 'Siacoin',
306
- 'sc': 'Siacoin',
307
- 'decred': 'Decred',
308
- 'dcr': 'Decred',
309
- 'horizen': 'Horizen',
310
- 'zen': 'Horizen',
311
- 'komodo': 'Komodo',
312
- 'kmd': 'Komodo',
313
- 'stratis': 'Stratis',
314
- 'strat': 'Stratis',
315
- 'ark': 'Ark',
316
- 'nxt': 'Nxt',
317
- 'bitshares': 'BitShares',
318
- 'bts': 'BitShares',
319
- 'steem': 'Steem',
320
- 'vechain': 'VeChain',
321
- 'vet': 'VeChain',
322
- 'theta': 'Theta Network',
323
- 'filecoin': 'Filecoin',
324
- 'fil': 'Filecoin',
325
- 'internetcomputer': 'Internet Computer',
326
- 'icp': 'Internet Computer',
327
- 'hedera': 'Hedera',
328
- 'hbar': 'Hedera',
329
- 'elrond': 'MultiversX',
330
- 'egld': 'MultiversX',
331
- 'flow': 'Flow',
332
- 'zilliqa': 'Zilliqa',
333
- 'zil': 'Zilliqa',
334
- 'ontology': 'Ontology',
335
- 'ont': 'Ontology',
336
- 'icon': 'ICON',
337
- 'icx': 'ICON',
338
- 'qtum': 'Qtum',
339
- 'ethereumclassic': 'Ethereum Classic',
340
- 'etc': 'Ethereum Classic',
341
- 'bitcoinsv': 'Bitcoin SV',
342
- 'bsv': 'Bitcoin SV',
343
- }
344
-
345
- base_name = base_names.get(base_currency_code, base_currency_code)
346
-
347
- if not network_code or network_code == base_currency_code.lower():
348
- # Native currency on its own network
349
- return base_name
350
-
351
- network_name = network_names.get(network_code.lower(), network_code.title())
352
- return f"{base_name} ({network_name})"
353
-
354
- def _get_precise_patterns(self) -> Dict[str, str]:
355
- """Get precise patterns from real NowPayments API data."""
356
- return {
357
- # Stablecoins - most common
358
- 'tether usd': 'USDT',
359
- 'tether (': 'USDT', # "Tether (Arbitrum One)"
360
- 'tether ': 'USDT', # "Tether USD (Algorand)"
361
- 'usd coin': 'USDC', # "USD Coin (Ethereum)"
362
- 'usd coin bridged': 'USDC', # "USD Coin Bridged (Polygon)"
363
- 'trueusd': 'TUSD', # "TrueUSD (Tron)"
364
- 'binance usd': 'BUSD', # "Binance USD (Polygon)"
365
- 'paxos standard': 'PAX', # "Paxos Standard"
366
- 'gemini dollar': 'GUSD', # "Gemini Dollar"
367
-
368
- # Major cryptocurrencies
369
- 'bitcoin': 'BTC',
370
- 'ethereum': 'ETH',
371
- 'cardano': 'ADA',
372
- 'dogecoin': 'DOGE',
373
- 'litecoin': 'LTC',
374
- 'bitcoin cash': 'BCH',
375
- 'ripple': 'XRP',
376
- 'polkadot': 'DOT',
377
- 'avalanche': 'AVAX',
378
- 'chainlink': 'LINK',
379
- 'uniswap': 'UNI',
380
- 'ethereum classic': 'ETC',
381
- 'stellar': 'XLM',
382
- 'monero': 'XMR',
383
- 'zcash': 'ZEC',
384
- 'dash': 'DASH',
385
- 'tezos': 'XTZ',
386
- 'cosmos': 'ATOM',
387
- 'algorand': 'ALGO',
388
- 'eos': 'EOS',
389
- 'tron': 'TRX',
390
- 'vechain': 'VET',
391
- 'theta network': 'THETA',
392
- 'filecoin': 'FIL',
393
- 'internet computer': 'ICP',
394
- 'hedera': 'HBAR',
395
- 'multiversx': 'EGLD',
396
- 'elrond': 'EGLD',
397
- 'flow': 'FLOW',
398
- 'near protocol': 'NEAR',
399
- 'solana': 'SOL',
400
- 'fantom': 'FTM',
401
- 'harmony': 'ONE',
402
- 'zilliqa': 'ZIL',
403
- 'ontology': 'ONT',
404
- 'icon': 'ICX',
405
- 'qtum': 'QTUM',
406
- 'waves': 'WAVES',
407
- 'lisk': 'LSK',
408
- 'nano': 'NANO',
409
- 'digibyte': 'DGB',
410
- 'ravencoin': 'RVN',
411
- 'siacoin': 'SC',
412
- 'decred': 'DCR',
413
- 'horizen': 'ZEN',
414
- 'komodo': 'KMD',
415
- 'stratis': 'STRAT',
416
- 'ark': 'ARK',
417
- 'nxt': 'NXT',
418
- 'bitshares': 'BTS',
419
- 'steem': 'STEEM',
420
-
421
- # Exchange tokens
422
- 'binance coin': 'BNB',
423
- 'bnb': 'BNB',
424
- 'kucoin shares': 'KCS',
425
- 'huobi token': 'HT',
426
- 'okb': 'OKB',
427
- 'crypto.com coin': 'CRO',
428
- 'ftx token': 'FTT',
429
- 'binance usd': 'BUSD',
430
-
431
- # Layer 1/2 tokens
432
- 'polygon': 'MATIC',
433
- 'matic network': 'MATIC',
434
- 'avalanche': 'AVAX',
435
- 'solana': 'SOL',
436
- 'chainlink': 'LINK',
437
- 'uniswap': 'UNI',
438
- 'aave': 'AAVE',
439
- 'compound': 'COMP',
440
- 'maker': 'MKR',
441
- 'synthetix': 'SNX',
442
- 'yearn.finance': 'YFI',
443
- 'sushiswap': 'SUSHI',
444
- 'curve dao token': 'CRV',
445
- 'balancer': 'BAL',
446
- 'ren': 'REN',
447
- 'kyber network': 'KNC',
448
- '0x': 'ZRX',
449
- 'basic attention token': 'BAT',
450
- 'enjin coin': 'ENJ',
451
- 'decentraland': 'MANA',
452
- 'the sandbox': 'SAND',
453
- 'axie infinity': 'AXS',
454
-
455
- # Other stablecoins
456
- 'dai stablecoin': 'DAI',
457
- 'frax': 'FRAX',
458
- 'liquity usd': 'LUSD',
459
- 'susd': 'SUSD',
460
- 'neutrino usd': 'USDN',
461
- 'reserve rights': 'RSR',
462
- 'ampleforth': 'AMPL',
463
- 'tribe': 'TRIBE',
464
- 'fei usd': 'FEI',
465
-
466
- # Meme coins
467
- 'shiba inu': 'SHIB',
468
- 'dogecoin': 'DOGE',
469
- 'safemoon': 'SAFEMOON',
470
- 'floki inu': 'FLOKI',
471
- 'baby doge coin': 'BABYDOGE',
472
-
473
- # Gaming tokens
474
- 'axie infinity': 'AXS',
475
- 'smooth love potion': 'SLP',
476
- 'the sandbox': 'SAND',
477
- 'decentraland': 'MANA',
478
- 'enjin coin': 'ENJ',
479
- 'gala': 'GALA',
480
- 'illuvium': 'ILV',
481
- 'star atlas': 'ATLAS',
482
- 'yield guild games': 'YGG',
483
-
484
- # NFT tokens
485
- 'opensea': 'OS',
486
- 'looks rare': 'LOOKS',
487
- 'x2y2': 'X2Y2',
488
-
489
- # Privacy coins
490
- 'monero': 'XMR',
491
- 'zcash': 'ZEC',
492
- 'dash': 'DASH',
493
- 'verge': 'XVG',
494
- 'beam': 'BEAM',
495
- 'grin': 'GRIN',
496
-
497
- # Oracle tokens
498
- 'chainlink': 'LINK',
499
- 'band protocol': 'BAND',
500
- 'api3': 'API3',
501
- 'tellor': 'TRB',
502
-
503
- # Storage tokens
504
- 'filecoin': 'FIL',
505
- 'storj': 'STORJ',
506
- 'siacoin': 'SC',
507
- 'arweave': 'AR',
508
-
509
- # Cross-chain tokens
510
- 'thorchain': 'RUNE',
511
- 'cosmos': 'ATOM',
512
- 'polkadot': 'DOT',
513
- 'kusama': 'KSM',
514
- 'ren': 'REN',
515
- 'anyswap': 'ANY',
516
-
517
- # Yield farming tokens
518
- 'yearn.finance': 'YFI',
519
- 'harvest finance': 'FARM',
520
- 'pickle finance': 'PICKLE',
521
- 'cream finance': 'CREAM',
522
- 'alpha finance lab': 'ALPHA',
523
-
524
- # Lending tokens
525
- 'aave': 'AAVE',
526
- 'compound': 'COMP',
527
- 'maker': 'MKR',
528
- 'venus': 'XVS',
529
- 'justlend': 'JST',
530
-
531
- # Insurance tokens
532
- 'nexus mutual': 'NXM',
533
- 'cover protocol': 'COVER',
534
- 'nsure network': 'NSURE',
535
-
536
- # Prediction market tokens
537
- 'augur': 'REP',
538
- 'gnosis': 'GNO',
539
- 'polymarket': 'POLY',
540
-
541
- # Social tokens
542
- 'rally': 'RLY',
543
- 'whale': 'WHALE',
544
- 'friends with benefits': 'FWB',
545
-
546
- # Fan tokens
547
- 'chiliz': 'CHZ',
548
- 'socios.com': 'CHZ',
549
-
550
- # Metaverse tokens
551
- 'decentraland': 'MANA',
552
- 'the sandbox': 'SAND',
553
- 'enjin coin': 'ENJ',
554
- 'bloktopia': 'BLOK',
555
- 'star atlas': 'ATLAS',
556
- 'illuvium': 'ILV',
557
- 'gala': 'GALA',
558
- 'axie infinity': 'AXS',
559
- 'smooth love potion': 'SLP',
560
- 'yield guild games': 'YGG',
561
- 'merit circle': 'MC',
562
- 'ultra': 'UOS',
563
- 'wax': 'WAXP',
564
- 'alien worlds': 'TLM',
565
- 'my neighbor alice': 'ALICE',
566
- 'radio caca': 'RACA',
567
- 'derace': 'DERC',
568
- 'vulcan forged': 'PYR',
569
- 'mobox': 'MBOX',
570
- 'cryptoblades': 'SKILL',
571
- 'thetan arena': 'THG',
572
- 'gods unchained': 'GODS',
573
- 'immutable x': 'IMX',
574
- 'ecomi': 'OMI',
575
- 'veve': 'VVV',
576
- 'efinity token': 'EFI',
577
- 'chromia': 'CHR',
578
- 'phantasma': 'SOUL',
579
- 'wax': 'WAXP',
580
- 'enjin coin': 'ENJ',
581
- 'flow': 'FLOW',
582
- 'dapper labs': 'FLOW',
583
- 'nba top shot': 'FLOW',
584
- 'cryptokitties': 'ETH',
585
- 'cryptopunks': 'ETH',
586
- 'bored ape yacht club': 'ETH',
587
- 'mutant ape yacht club': 'ETH',
588
- 'cool cats': 'ETH',
589
- 'world of women': 'ETH',
590
- 'pudgy penguins': 'ETH',
591
- 'azuki': 'ETH',
592
- 'clone x': 'ETH',
593
- 'moonbirds': 'ETH',
594
- 'otherdeeds for otherside': 'ETH',
595
- 'yuga labs': 'ETH',
596
- }
597
-
598
- def _get_fallback_patterns(self) -> Dict[str, str]:
599
- """Get fallback patterns for edge cases."""
600
- return {
601
- 'usdt': 'USDT',
602
- 'usdc': 'USDC',
603
- 'tusd': 'TUSD',
604
- 'busd': 'BUSD',
605
- 'dai': 'DAI',
606
- 'frax': 'FRAX',
607
- 'btc': 'BTC',
608
- 'eth ': 'ETH',
609
- 'ada': 'ADA',
610
- 'doge': 'DOGE',
611
- 'matic': 'MATIC',
612
- 'avax': 'AVAX',
613
- 'sol': 'SOL',
614
- 'dot': 'DOT',
615
- 'atom': 'ATOM',
616
- 'near': 'NEAR',
617
- 'algo': 'ALGO',
618
- 'xtz': 'XTZ',
619
- 'eos': 'EOS',
620
- 'trx': 'TRX',
621
- 'xlm': 'XLM',
622
- 'xrp': 'XRP',
623
- 'ltc': 'LTC',
624
- 'bch': 'BCH',
625
- 'etc': 'ETC',
626
- 'xmr': 'XMR',
627
- 'zec': 'ZEC',
628
- 'dash': 'DASH',
629
- 'bnb': 'BNB',
630
- 'link': 'LINK',
631
- 'uni': 'UNI',
632
- 'aave': 'AAVE',
633
- 'comp': 'COMP',
634
- 'mkr': 'MKR',
635
- 'snx': 'SNX',
636
- 'yfi': 'YFI',
637
- 'sushi': 'SUSHI',
638
- 'crv': 'CRV',
639
- 'bal': 'BAL',
640
- 'ren': 'REN',
641
- 'knc': 'KNC',
642
- 'zrx': 'ZRX',
643
- 'bat': 'BAT',
644
- 'enj': 'ENJ',
645
- 'mana': 'MANA',
646
- 'sand': 'SAND',
647
- 'axs': 'AXS',
648
- 'ftm': 'FTM',
649
- 'one': 'ONE',
650
- 'zil': 'ZIL',
651
- 'ont': 'ONT',
652
- 'icx': 'ICX',
653
- 'qtum': 'QTUM',
654
- 'waves': 'WAVES',
655
- 'lsk': 'LSK',
656
- 'nano': 'NANO',
657
- 'dgb': 'DGB',
658
- 'rvn': 'RVN',
659
- 'sc': 'SC',
660
- 'dcr': 'DCR',
661
- 'zen': 'ZEN',
662
- 'kmd': 'KMD',
663
- 'strat': 'STRAT',
664
- 'ark': 'ARK',
665
- 'nxt': 'NXT',
666
- 'bts': 'BTS',
667
- 'steem': 'STEEM',
668
- 'vet': 'VET',
669
- 'theta': 'THETA',
670
- 'fil': 'FIL',
671
- 'icp': 'ICP',
672
- 'hbar': 'HBAR',
673
- 'egld': 'EGLD',
674
- 'flow': 'FLOW',
675
- 'iota': 'IOTA',
676
- 'shib': 'SHIB',
677
- 'floki': 'FLOKI',
678
- 'safemoon': 'SAFEMOON',
679
- 'babydoge': 'BABYDOGE',
680
- 'slp': 'SLP',
681
- 'gala': 'GALA',
682
- 'ilv': 'ILV',
683
- 'atlas': 'ATLAS',
684
- 'ygg': 'YGG',
685
- 'rune': 'RUNE',
686
- 'ksm': 'KSM',
687
- 'any': 'ANY',
688
- 'farm': 'FARM',
689
- 'pickle': 'PICKLE',
690
- 'cream': 'CREAM',
691
- 'alpha': 'ALPHA',
692
- 'xvs': 'XVS',
693
- 'jst': 'JST',
694
- 'nxm': 'NXM',
695
- 'cover': 'COVER',
696
- 'nsure': 'NSURE',
697
- 'rep': 'REP',
698
- 'gno': 'GNO',
699
- 'poly': 'POLY',
700
- 'rly': 'RLY',
701
- 'whale': 'WHALE',
702
- 'fwb': 'FWB',
703
- 'chz': 'CHZ',
704
- 'blok': 'BLOK',
705
- 'mc': 'MC',
706
- 'uos': 'UOS',
707
- 'waxp': 'WAXP',
708
- 'tlm': 'TLM',
709
- 'alice': 'ALICE',
710
- 'raca': 'RACA',
711
- 'derc': 'DERC',
712
- 'pyr': 'PYR',
713
- 'mbox': 'MBOX',
714
- 'skill': 'SKILL',
715
- 'thg': 'THG',
716
- 'gods': 'GODS',
717
- 'imx': 'IMX',
718
- 'omi': 'OMI',
719
- 'vvv': 'VVV',
720
- 'efi': 'EFI',
721
- 'chr': 'CHR',
722
- 'soul': 'SOUL',
723
- }
724
-
725
- def _get_provider_code_patterns(self) -> Dict[str, str]:
726
- """Get NowPayments provider code patterns."""
727
- return {
728
- # Stablecoins with network suffixes
729
- 'USDTERC20': 'USDT',
730
- 'USDTTRC20': 'USDT',
731
- 'USDTBSC': 'USDT',
732
- 'USDTMATIC': 'USDT',
733
- 'USDTARB': 'USDT',
734
- 'USDTALGO': 'USDT',
735
- 'USDTARC20': 'USDT', # Avalanche
736
- 'USDTOP': 'USDT', # Optimism
737
- 'USDTSOL': 'USDT', # Solana
738
- 'USDTTON': 'USDT', # TON
739
- 'USDTNEAR': 'USDT', # NEAR
740
- 'USDTEOS': 'USDT', # EOS
741
- 'USDTDOT': 'USDT', # Polkadot
742
- 'USDTCELO': 'USDT', # Celo
743
- 'USDTKAVA': 'USDT', # Kava
744
- 'USDTXTZ': 'USDT', # Tezos
745
-
746
- # USDC variants
747
- 'USDCERC20': 'USDC',
748
- 'USDCBSC': 'USDC',
749
- 'USDCMATIC': 'USDC',
750
- 'USDCARB': 'USDC',
751
- 'USDCALGO': 'USDC',
752
- 'USDCARC20': 'USDC', # Avalanche
753
- 'USDCOP': 'USDC', # Optimism
754
- 'USDCSOL': 'USDC', # Solana
755
- 'USDCBASE': 'USDC', # Base
756
- 'USDCKCC': 'USDC', # KCC
757
- 'USDCXLM': 'USDC', # Stellar
758
-
759
- # ETH variants
760
- 'ETHBSC': 'ETH',
761
- 'ETHARB': 'ETH',
762
- 'ETHBASE': 'ETH',
763
- 'ETHLNA': 'ETH', # Linea
764
-
765
- # Other common patterns
766
- 'BTCBSC': 'BTC', # Wrapped BTC
767
- 'WBTC': 'BTC', # Wrapped Bitcoin
768
- 'WETH': 'ETH', # Wrapped Ethereum
769
-
770
- # Network-specific tokens with suffixes
771
- 'BNBBSC': 'BNB',
772
- 'MATICMATIC': 'MATIC',
773
- 'AVAXARC20': 'AVAX',
774
- 'SOLANASOL': 'SOL',
775
-
776
- # Additional patterns from NowPayments
777
- '1INCHBSC': '1INCH',
778
- '1INCHERC20': '1INCH',
779
- 'AAVEERC20': 'AAVE',
780
- 'AAVEBSC': 'AAVE',
781
- 'ADABSC': 'ADA',
782
- 'ALGOERC20': 'ALGO',
783
- 'APEERC20': 'APE',
784
- 'APEBSC': 'APE',
785
- 'ATOMCOSMOS': 'ATOM',
786
- 'AVAXBSC': 'AVAX',
787
- 'AXSERC20': 'AXS',
788
- 'AXSBSC': 'AXS',
789
- 'BATERC20': 'BAT',
790
- 'BATBSC': 'BAT',
791
- 'BCHBSC': 'BCH',
792
- 'BNBERC20': 'BNB',
793
- 'BUSDBSC': 'BUSD',
794
- 'BUSDERC20': 'BUSD',
795
- 'CAKEBSC': 'CAKE',
796
- 'COMPBSC': 'COMP',
797
- 'COMPERC20': 'COMP',
798
- 'CRVERC20': 'CRV',
799
- 'CRVBSC': 'CRV',
800
- 'DAIBSC': 'DAI',
801
- 'DAIERC20': 'DAI',
802
- 'DOGEERC20': 'DOGE',
803
- 'DOGEBSC': 'DOGE',
804
- 'DOTBSC': 'DOT',
805
- 'DOTERC20': 'DOT',
806
- 'ENJERC20': 'ENJ',
807
- 'ENJBSC': 'ENJ',
808
- 'ETCBSC': 'ETC',
809
- 'ETCERC20': 'ETC',
810
- 'FILBSC': 'FIL',
811
- 'FILERC20': 'FIL',
812
- 'FTMBSC': 'FTM',
813
- 'FTMERC20': 'FTM',
814
- 'GALAERC20': 'GALA',
815
- 'GALABSC': 'GALA',
816
- 'GRTERC20': 'GRT',
817
- 'GRTBSC': 'GRT',
818
- 'ICPERC20': 'ICP',
819
- 'ICPBSC': 'ICP',
820
- 'LINKERC20': 'LINK',
821
- 'LINKBSC': 'LINK',
822
- 'LTCBSC': 'LTC',
823
- 'LTCERC20': 'LTC',
824
- 'MANAERC20': 'MANA',
825
- 'MANABSC': 'MANA',
826
- 'MKRBSC': 'MKR',
827
- 'MKRERC20': 'MKR',
828
- 'NEARERC20': 'NEAR',
829
- 'NEARBSC': 'NEAR',
830
- 'ONEERC20': 'ONE',
831
- 'ONEBSC': 'ONE',
832
- 'SANDERC20': 'SAND',
833
- 'SANDBSC': 'SAND',
834
- 'SHIBERC20': 'SHIB',
835
- 'SHIBBSC': 'SHIB',
836
- 'SNXERC20': 'SNX',
837
- 'SNXBSC': 'SNX',
838
- 'SOLERC20': 'SOL',
839
- 'SOLBSC': 'SOL',
840
- 'SUSHIERC20': 'SUSHI',
841
- 'SUSHIBSC': 'SUSHI',
842
- 'TRXBSC': 'TRX',
843
- 'TRXERC20': 'TRX',
844
- 'TUSDTRC20': 'TUSD',
845
- 'TUSDBSC': 'TUSD',
846
- 'TUSDERC20': 'TUSD',
847
- 'UNIERC20': 'UNI',
848
- 'UNIBSC': 'UNI',
849
- 'VETBSC': 'VET',
850
- 'VETERC20': 'VET',
851
- 'XLMBSC': 'XLM',
852
- 'XLMERC20': 'XLM',
853
- 'XRPBSC': 'XRP',
854
- 'XRPERC20': 'XRP',
855
- 'XTZXTZ': 'XTZ',
856
- 'YFIIERC20': 'YFI',
857
- 'YFIIBSC': 'YFI',
858
- 'ZRXERC20': 'ZRX',
859
- 'ZRXBSC': 'ZRX',
860
- }
861
-
862
- def _get_network_suffixes(self) -> List[str]:
863
- """Get common network suffixes for pattern matching."""
864
- return [
865
- 'ERC20', 'TRC20', 'BSC', 'MATIC', 'ARB', 'ALGO', 'ARC20',
866
- 'OP', 'SOL', 'TON', 'NEAR', 'EOS', 'DOT', 'CELO', 'KAVA',
867
- 'XTZ', 'BASE', 'KCC', 'XLM', 'LNA', 'AVAX', 'FTM', 'ONE',
868
- 'HARMONY', 'MOONBEAM', 'MOONRIVER', 'GNOSIS', 'AURORA',
869
- 'CRONOS', 'EVMOS', 'MILKOMEDA', 'SYSCOIN', 'METIS', 'BOBA',
870
- 'FUSE', 'TELOS', 'HECO', 'OKEX', 'XDAI', 'COSMOS', 'OSMOSIS',
871
- 'TERRA', 'KUSAMA', 'POLKADOT', 'CARDANO', 'STELLAR', 'RIPPLE',
872
- 'BITCOIN', 'LITECOIN', 'BITCOINCASH', 'DOGECOIN', 'ZCASH',
873
- 'MONERO', 'DASH', 'TEZOS', 'IOTA', 'NEO', 'WAVES', 'LISK',
874
- 'NANO', 'DIGIBYTE', 'RAVENCOIN', 'SIACOIN', 'DECRED',
875
- 'HORIZEN', 'KOMODO', 'STRATIS', 'ARK', 'NXT', 'BITSHARES',
876
- 'STEEM', 'VECHAIN', 'THETA', 'FILECOIN', 'INTERNETCOMPUTER',
877
- 'HEDERA', 'ELROND', 'FLOW', 'ZILLIQA', 'ONTOLOGY', 'ICON',
878
- 'QTUM', 'ETHEREUMCLASSIC', 'BITCOINSV'
879
- ]