django-cfg 1.3.13__py3-none-any.whl → 1.4.3__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.
- django_cfg/__init__.py +1 -1
- django_cfg/apps/accounts/admin/user_admin.py +39 -16
- django_cfg/apps/accounts/serializers/profile.py +1 -1
- django_cfg/apps/accounts/services/otp_service.py +18 -11
- django_cfg/apps/accounts/signals.py +15 -24
- django_cfg/apps/accounts/utils/notifications.py +217 -358
- django_cfg/apps/accounts/views/otp.py +2 -2
- django_cfg/apps/accounts/views/webhook.py +1 -1
- django_cfg/apps/agents/core/django_agent.py +1 -1
- django_cfg/apps/agents/examples/__init__.py +3 -0
- django_cfg/apps/agents/examples/simple_example.py +161 -0
- django_cfg/apps/api/commands/views.py +66 -83
- django_cfg/apps/api/health/drf_views.py +269 -0
- django_cfg/apps/api/health/serializers.py +45 -0
- django_cfg/apps/api/health/urls.py +6 -1
- django_cfg/apps/knowbase/admin/actions/__init__.py +13 -0
- django_cfg/apps/knowbase/admin/actions/visibility_actions.py +56 -0
- django_cfg/apps/knowbase/admin/document_admin.py +136 -270
- django_cfg/apps/knowbase/admin/helpers/__init__.py +17 -0
- django_cfg/apps/knowbase/admin/helpers/configs.py +72 -0
- django_cfg/apps/knowbase/admin/helpers/display_helpers.py +156 -0
- django_cfg/apps/knowbase/admin/helpers/statistics.py +108 -0
- django_cfg/apps/knowbase/config/constance_fields.py +1 -1
- django_cfg/apps/knowbase/config/settings.py +2 -2
- django_cfg/apps/knowbase/examples/__init__.py +3 -0
- django_cfg/apps/knowbase/examples/external_data_usage.py +191 -0
- django_cfg/apps/knowbase/mixins/__init__.py +19 -2
- django_cfg/apps/knowbase/mixins/config/__init__.py +14 -0
- django_cfg/apps/knowbase/mixins/config/defaults.py +75 -0
- django_cfg/apps/knowbase/mixins/config/meta_config.py +120 -0
- django_cfg/apps/knowbase/mixins/creator.py +10 -10
- django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +199 -0
- django_cfg/apps/knowbase/mixins/external_data_mixin.py +105 -403
- django_cfg/apps/knowbase/mixins/generators/__init__.py +16 -0
- django_cfg/apps/knowbase/mixins/generators/content_generator.py +218 -0
- django_cfg/apps/knowbase/mixins/generators/field_analyzer.py +76 -0
- django_cfg/apps/knowbase/mixins/generators/metadata_generator.py +124 -0
- django_cfg/apps/knowbase/mixins/service.py +2 -2
- django_cfg/apps/knowbase/services/archive/__init__.py +1 -0
- django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +17 -0
- django_cfg/apps/knowbase/services/archive/analyzers/complexity_analyzer.py +33 -0
- django_cfg/apps/knowbase/services/archive/analyzers/purpose_detector.py +36 -0
- django_cfg/apps/knowbase/services/archive/analyzers/quality_analyzer.py +39 -0
- django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +103 -0
- django_cfg/apps/knowbase/services/archive/chunking/__init__.py +19 -0
- django_cfg/apps/knowbase/services/archive/chunking/base.py +81 -0
- django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +62 -0
- django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +107 -0
- django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +248 -0
- django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +70 -0
- django_cfg/apps/knowbase/services/archive/chunking_service.py +110 -729
- django_cfg/apps/knowbase/services/archive/context/__init__.py +14 -0
- django_cfg/apps/knowbase/services/archive/context/builders.py +220 -0
- django_cfg/apps/knowbase/services/archive/context/models.py +38 -0
- django_cfg/apps/knowbase/services/embedding/models.py +18 -14
- django_cfg/apps/knowbase/services/embedding/processors.py +6 -3
- django_cfg/apps/knowbase/tasks/document_processing.py +11 -3
- django_cfg/apps/leads/tests.py +1 -1
- django_cfg/apps/payments/admin/api_keys_admin.py +1 -1
- django_cfg/apps/payments/admin/balance_admin.py +1 -1
- django_cfg/apps/payments/admin/currencies_admin.py +1 -1
- django_cfg/apps/payments/admin/payments_admin.py +1 -1
- django_cfg/apps/payments/admin/subscriptions_admin.py +1 -1
- django_cfg/apps/payments/admin_interface/templates/payments/base.html +59 -126
- django_cfg/apps/payments/admin_interface/views/api/payments.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/stats.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/users.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/webhook_public.py +1 -1
- django_cfg/apps/payments/admin_interface/views/base.py +29 -2
- django_cfg/apps/payments/apps.py +1 -1
- django_cfg/apps/payments/config/django_cfg_integration.py +2 -2
- django_cfg/apps/payments/config/helpers.py +3 -2
- django_cfg/apps/payments/management/commands/cleanup_expired_data.py +1 -1
- django_cfg/apps/payments/management/commands/currency_stats.py +1 -1
- django_cfg/apps/payments/management/commands/manage_currencies.py +1 -1
- django_cfg/apps/payments/management/commands/manage_providers.py +1 -1
- django_cfg/apps/payments/management/commands/process_pending_payments.py +1 -1
- django_cfg/apps/payments/management/commands/test_providers.py +1 -1
- django_cfg/apps/payments/middleware/api_access.py +1 -1
- django_cfg/apps/payments/middleware/rate_limiting.py +1 -1
- django_cfg/apps/payments/middleware/usage_tracking.py +1 -1
- django_cfg/apps/payments/models/balance.py +2 -2
- django_cfg/apps/payments/models/managers/api_key_managers.py +1 -1
- django_cfg/apps/payments/models/managers/balance_managers.py +1 -1
- django_cfg/apps/payments/models/managers/currency_managers.py +1 -1
- django_cfg/apps/payments/models/managers/payment_managers.py +1 -1
- django_cfg/apps/payments/models/managers/subscription_managers.py +1 -1
- django_cfg/apps/payments/models/payments.py +2 -2
- django_cfg/apps/payments/services/cache_service/__init__.py +1 -1
- django_cfg/apps/payments/services/cache_service/simple_cache.py +10 -5
- django_cfg/apps/payments/services/core/base.py +1 -1
- django_cfg/apps/payments/services/core/currency/__init__.py +13 -0
- django_cfg/apps/payments/services/core/currency/currency_converter.py +57 -0
- django_cfg/apps/payments/services/core/currency/currency_validator.py +61 -0
- django_cfg/apps/payments/services/core/operations/__init__.py +15 -0
- django_cfg/apps/payments/services/core/operations/payment_canceller.py +100 -0
- django_cfg/apps/payments/services/core/operations/payment_creator.py +196 -0
- django_cfg/apps/payments/services/core/operations/status_checker.py +100 -0
- django_cfg/apps/payments/services/core/payment_service.py +124 -612
- django_cfg/apps/payments/services/core/providers/__init__.py +13 -0
- django_cfg/apps/payments/services/core/providers/provider_client.py +132 -0
- django_cfg/apps/payments/services/core/providers/status_mapper.py +89 -0
- django_cfg/apps/payments/services/core/utils/__init__.py +13 -0
- django_cfg/apps/payments/services/core/utils/data_converter.py +48 -0
- django_cfg/apps/payments/services/core/utils/statistics_calculator.py +69 -0
- django_cfg/apps/payments/services/providers/base.py +1 -1
- django_cfg/apps/payments/services/providers/nowpayments/__init__.py +3 -3
- django_cfg/apps/payments/services/providers/nowpayments/parsers/__init__.py +9 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/__init__.py +23 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/constants.py +23 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/currency_names.py +244 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/patterns.py +511 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/parser.py +168 -0
- django_cfg/apps/payments/services/providers/nowpayments/provider.py +1 -1
- django_cfg/apps/payments/services/providers/nowpayments/sync.py +1 -1
- django_cfg/apps/payments/services/providers/registry.py +1 -1
- django_cfg/apps/payments/services/providers/sync_service.py +1 -1
- django_cfg/apps/payments/signals/__init__.py +1 -1
- django_cfg/apps/payments/signals/api_key_signals.py +1 -1
- django_cfg/apps/payments/signals/balance_signals.py +1 -1
- django_cfg/apps/payments/signals/payment_signals.py +1 -1
- django_cfg/apps/payments/signals/subscription_signals.py +1 -1
- django_cfg/apps/payments/views/api/api_keys.py +1 -1
- django_cfg/apps/payments/views/api/balances.py +1 -1
- django_cfg/apps/payments/views/api/base.py +1 -1
- django_cfg/apps/payments/views/api/currencies.py +1 -1
- django_cfg/apps/payments/views/api/payments.py +1 -1
- django_cfg/apps/payments/views/api/subscriptions.py +1 -1
- django_cfg/apps/payments/views/api/webhooks.py +1 -1
- django_cfg/apps/payments/views/serializers/api_keys.py +1 -1
- django_cfg/apps/payments/views/serializers/balances.py +1 -1
- django_cfg/apps/payments/views/serializers/currencies.py +1 -1
- django_cfg/apps/payments/views/serializers/payments.py +1 -1
- django_cfg/apps/payments/views/serializers/subscriptions.py +1 -1
- django_cfg/apps/payments/views/serializers/webhooks.py +1 -1
- django_cfg/apps/support/admin/support_admin.py +21 -13
- django_cfg/apps/support/templates/support/chat/access_denied.html +21 -27
- django_cfg/apps/support/templates/support/chat/ticket_chat.html +183 -254
- django_cfg/apps/support/utils/support_email_service.py +1 -1
- django_cfg/apps/tasks/templates/tasks/layout/base.html +20 -115
- django_cfg/apps/tasks/utils/simulator.py +1 -1
- django_cfg/apps/tasks/views/dashboard.py +33 -3
- django_cfg/apps/urls.py +5 -1
- django_cfg/cli/README.md +57 -471
- django_cfg/cli/commands/create_project.py +140 -529
- django_cfg/cli/main.py +13 -10
- django_cfg/core/__init__.py +63 -6
- django_cfg/core/base/__init__.py +5 -0
- django_cfg/core/base/config_model.py +652 -0
- django_cfg/core/builders/__init__.py +11 -0
- django_cfg/core/builders/apps_builder.py +258 -0
- django_cfg/core/builders/middleware_builder.py +115 -0
- django_cfg/core/builders/security_builder.py +96 -0
- django_cfg/core/config.py +20 -892
- django_cfg/core/constants.py +69 -0
- django_cfg/core/environment/__init__.py +9 -0
- django_cfg/core/exceptions.py +45 -298
- django_cfg/core/generation/__init__.py +51 -0
- django_cfg/core/generation/core_generators/__init__.py +0 -0
- django_cfg/core/generation/core_generators/settings.py +90 -0
- django_cfg/core/generation/core_generators/static.py +82 -0
- django_cfg/core/generation/core_generators/templates.py +141 -0
- django_cfg/core/generation/data_generators/__init__.py +15 -0
- django_cfg/core/generation/data_generators/cache.py +132 -0
- django_cfg/core/generation/data_generators/database.py +117 -0
- django_cfg/core/generation/generation.py +92 -0
- django_cfg/core/generation/integration_generators/__init__.py +21 -0
- django_cfg/core/generation/integration_generators/api.py +237 -0
- django_cfg/core/generation/integration_generators/sessions.py +65 -0
- django_cfg/core/generation/integration_generators/tailwind.py +54 -0
- django_cfg/core/generation/integration_generators/tasks.py +92 -0
- django_cfg/core/generation/integration_generators/third_party.py +144 -0
- django_cfg/core/generation/orchestrator.py +285 -0
- django_cfg/core/generation/protocols.py +30 -0
- django_cfg/core/generation/security_generators/__init__.py +0 -0
- django_cfg/core/generation/utility_generators/__init__.py +24 -0
- django_cfg/core/generation/utility_generators/email.py +58 -0
- django_cfg/core/generation/utility_generators/i18n.py +66 -0
- django_cfg/core/generation/utility_generators/limits.py +58 -0
- django_cfg/core/generation/utility_generators/logging.py +66 -0
- django_cfg/core/generation/utility_generators/security.py +101 -0
- django_cfg/core/generation/utils/__init__.py +0 -0
- django_cfg/core/generation/utils/helpers.py +32 -0
- django_cfg/core/integration/__init__.py +18 -25
- django_cfg/core/integration/display/startup.py +146 -133
- django_cfg/core/integration/url_integration.py +13 -2
- django_cfg/core/services/__init__.py +5 -0
- django_cfg/core/services/config_service.py +121 -0
- django_cfg/core/state/__init__.py +9 -0
- django_cfg/core/state/registry.py +84 -0
- django_cfg/core/types/__init__.py +15 -0
- django_cfg/core/types/aliases.py +15 -0
- django_cfg/core/types/enums.py +49 -0
- django_cfg/dashboard/DEBUG_README.md +105 -0
- django_cfg/dashboard/REFACTORING_SUMMARY.md +237 -0
- django_cfg/dashboard/__init__.py +24 -0
- django_cfg/dashboard/components.py +308 -0
- django_cfg/dashboard/debug.py +176 -0
- django_cfg/dashboard/management/__init__.py +0 -0
- django_cfg/dashboard/management/commands/__init__.py +0 -0
- django_cfg/dashboard/management/commands/debug_dashboard.py +109 -0
- django_cfg/dashboard/sections/__init__.py +1 -0
- django_cfg/dashboard/sections/base.py +128 -0
- django_cfg/dashboard/sections/commands.py +32 -0
- django_cfg/dashboard/sections/overview.py +394 -0
- django_cfg/dashboard/sections/stats.py +48 -0
- django_cfg/dashboard/sections/system.py +73 -0
- django_cfg/management/commands/check_settings.py +6 -2
- django_cfg/management/commands/clear_constance.py +6 -1
- django_cfg/management/commands/create_token.py +5 -4
- django_cfg/management/commands/generate.py +5 -0
- django_cfg/management/commands/list_urls.py +7 -2
- django_cfg/management/commands/migrate_all.py +6 -2
- django_cfg/management/commands/migrator.py +6 -1
- django_cfg/management/commands/rundramatiq.py +6 -1
- django_cfg/management/commands/rundramatiq_simulator.py +11 -4
- django_cfg/management/commands/runserver_ngrok.py +9 -7
- django_cfg/management/commands/script.py +25 -21
- django_cfg/management/commands/show_config.py +6 -1
- django_cfg/management/commands/show_urls.py +8 -3
- django_cfg/management/commands/superuser.py +5 -4
- django_cfg/management/commands/task_clear.py +8 -3
- django_cfg/management/commands/task_status.py +8 -3
- django_cfg/management/commands/test_email.py +6 -1
- django_cfg/management/commands/test_telegram.py +6 -1
- django_cfg/management/commands/test_twilio.py +6 -1
- django_cfg/management/commands/tree.py +7 -4
- django_cfg/models/__init__.py +88 -3
- django_cfg/models/api/__init__.py +27 -0
- django_cfg/models/{api.py → api/config.py} +1 -1
- django_cfg/models/api/drf/__init__.py +21 -0
- django_cfg/models/api/drf/config.py +101 -0
- django_cfg/models/api/drf/redoc.py +31 -0
- django_cfg/models/api/drf/spectacular.py +129 -0
- django_cfg/models/api/drf/swagger.py +59 -0
- django_cfg/models/{api_keys.py → api/keys.py} +16 -6
- django_cfg/models/{limits.py → api/limits.py} +0 -1
- django_cfg/models/base/__init__.py +14 -0
- django_cfg/models/django/__init__.py +16 -0
- django_cfg/models/{constance.py → django/constance.py} +1 -1
- django_cfg/models/{environment.py → django/environment.py} +1 -1
- django_cfg/models/infrastructure/__init__.py +17 -0
- django_cfg/models/{cache.py → infrastructure/cache.py} +3 -2
- django_cfg/models/infrastructure/database/__init__.py +22 -0
- django_cfg/models/infrastructure/database/config.py +265 -0
- django_cfg/models/infrastructure/database/converters.py +91 -0
- django_cfg/models/infrastructure/database/parsers.py +96 -0
- django_cfg/models/infrastructure/database/routing.py +85 -0
- django_cfg/models/infrastructure/database/validators.py +170 -0
- django_cfg/models/{logging.py → infrastructure/logging.py} +1 -1
- django_cfg/models/{security.py → infrastructure/security.py} +2 -2
- django_cfg/models/ngrok/__init__.py +11 -0
- django_cfg/models/ngrok/auth.py +37 -0
- django_cfg/models/ngrok/config.py +77 -0
- django_cfg/models/ngrok/tunnel.py +35 -0
- django_cfg/models/payments/__init__.py +20 -0
- django_cfg/models/payments/api_keys.py +57 -0
- django_cfg/models/{payments.py → payments/config.py} +56 -154
- django_cfg/models/payments/providers/__init__.py +15 -0
- django_cfg/models/payments/providers/base.py +25 -0
- django_cfg/models/payments/providers/nowpayments.py +48 -0
- django_cfg/models/services/__init__.py +18 -0
- django_cfg/models/services/base.py +65 -0
- django_cfg/models/{email.py → services/email.py} +1 -1
- django_cfg/models/services/telegram.py +172 -0
- django_cfg/models/tasks/__init__.py +51 -0
- django_cfg/models/tasks/backends.py +250 -0
- django_cfg/models/tasks/config.py +314 -0
- django_cfg/models/tasks/utils.py +174 -0
- django_cfg/modules/base.py +18 -3
- django_cfg/modules/django_admin/decorators/actions.py +1 -1
- django_cfg/modules/django_admin/decorators/display.py +1 -1
- django_cfg/modules/django_admin/mixins/standalone_actions_mixin.py +1 -1
- django_cfg/modules/django_currency/examples/__init__.py +3 -0
- django_cfg/modules/django_currency/examples/example_database_usage.py +144 -0
- django_cfg/modules/django_drf_theme/CHANGELOG.md +210 -0
- django_cfg/modules/django_drf_theme/EXAMPLE.md +465 -0
- django_cfg/modules/django_drf_theme/IMPLEMENTATION.md +232 -0
- django_cfg/modules/django_drf_theme/README.md +207 -0
- django_cfg/modules/django_drf_theme/TAILWIND_CDN_GUIDE.md +274 -0
- django_cfg/modules/django_drf_theme/__init__.py +23 -0
- django_cfg/modules/django_drf_theme/apps.py +15 -0
- django_cfg/modules/django_drf_theme/renderers.py +58 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/api.html +375 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/base.html +938 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/filter_form.html +132 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/raw_data_form.html +123 -0
- django_cfg/modules/django_drf_theme/templatetags/__init__.py +1 -0
- django_cfg/modules/django_drf_theme/templatetags/tailwind_tags.py +57 -0
- django_cfg/modules/django_email/__init__.py +14 -0
- django_cfg/modules/{django_email.py → django_email/service.py} +78 -113
- django_cfg/modules/django_email/utils.py +40 -0
- django_cfg/modules/django_health/__init__.py +9 -0
- django_cfg/modules/{django_health.py → django_health/service.py} +23 -21
- django_cfg/modules/django_ipc_client/README.md +346 -0
- django_cfg/modules/django_ipc_client/__init__.py +51 -0
- django_cfg/modules/django_ipc_client/client.py +540 -0
- django_cfg/modules/django_ipc_client/config.py +207 -0
- django_cfg/modules/django_ipc_client/dashboard/README.md +517 -0
- django_cfg/modules/django_ipc_client/dashboard/UNFOLD_INTEGRATION.md +439 -0
- django_cfg/modules/django_ipc_client/dashboard/__init__.py +11 -0
- django_cfg/modules/django_ipc_client/dashboard/apps.py +22 -0
- django_cfg/modules/django_ipc_client/dashboard/monitor.py +435 -0
- django_cfg/modules/django_ipc_client/dashboard/static/django_ipc_dashboard/js/dashboard.js +373 -0
- django_cfg/modules/django_ipc_client/dashboard/templates/django_ipc_dashboard/base.html +76 -0
- django_cfg/modules/django_ipc_client/dashboard/templates/django_ipc_dashboard/dashboard.html +200 -0
- django_cfg/modules/django_ipc_client/dashboard/urls.py +22 -0
- django_cfg/modules/django_ipc_client/dashboard/urls_admin.py +9 -0
- django_cfg/modules/django_ipc_client/dashboard/views.py +251 -0
- django_cfg/modules/django_ipc_client/exceptions.py +201 -0
- django_cfg/modules/django_llm/llm/client.py +155 -550
- django_cfg/modules/django_llm/llm/embeddings/__init__.py +13 -0
- django_cfg/modules/django_llm/llm/embeddings/mock_embedder.py +106 -0
- django_cfg/modules/django_llm/llm/embeddings/openai_embedder.py +79 -0
- django_cfg/modules/django_llm/llm/models_api/__init__.py +9 -0
- django_cfg/modules/django_llm/llm/models_api/models_query.py +163 -0
- django_cfg/modules/django_llm/llm/providers/__init__.py +15 -0
- django_cfg/modules/django_llm/llm/providers/config_builder.py +103 -0
- django_cfg/modules/django_llm/llm/providers/provider_manager.py +148 -0
- django_cfg/modules/django_llm/llm/providers/provider_selector.py +60 -0
- django_cfg/modules/django_llm/llm/requests/__init__.py +15 -0
- django_cfg/modules/django_llm/llm/requests/cache_manager.py +170 -0
- django_cfg/modules/django_llm/llm/requests/chat_handler.py +199 -0
- django_cfg/modules/django_llm/llm/requests/embedding_handler.py +113 -0
- django_cfg/modules/django_llm/llm/responses/__init__.py +9 -0
- django_cfg/modules/django_llm/llm/responses/response_builder.py +131 -0
- django_cfg/modules/django_llm/llm/stats/__init__.py +9 -0
- django_cfg/modules/django_llm/llm/stats/stats_manager.py +107 -0
- django_cfg/modules/django_llm/translator/detectors/__init__.py +13 -0
- django_cfg/modules/django_llm/translator/detectors/language_detector.py +90 -0
- django_cfg/modules/django_llm/translator/detectors/script_detector.py +153 -0
- django_cfg/modules/django_llm/translator/stats/__init__.py +11 -0
- django_cfg/modules/django_llm/translator/stats/stats_tracker.py +85 -0
- django_cfg/modules/django_llm/translator/translator.py +150 -603
- django_cfg/modules/django_llm/translator/translators/__init__.py +15 -0
- django_cfg/modules/django_llm/translator/translators/json_translator.py +316 -0
- django_cfg/modules/django_llm/translator/translators/text_translator.py +139 -0
- django_cfg/modules/django_llm/translator/utils/__init__.py +13 -0
- django_cfg/modules/django_llm/translator/utils/prompt_builder.py +110 -0
- django_cfg/modules/django_llm/translator/utils/text_utils.py +114 -0
- django_cfg/modules/django_logging/FIXES_SUMMARY.md +276 -0
- django_cfg/modules/django_logging/LOGGING_GUIDE.md +504 -0
- django_cfg/modules/django_logging/__init__.py +14 -0
- django_cfg/modules/{django_logger.py → django_logging/django_logger.py} +13 -13
- django_cfg/modules/{logger.py → django_logging/logger.py} +14 -4
- django_cfg/modules/django_ngrok/__init__.py +39 -0
- django_cfg/modules/{django_ngrok.py → django_ngrok/service.py} +14 -42
- django_cfg/modules/django_rpc_old/POETRY.md +344 -0
- django_cfg/modules/django_rpc_old/README.md +397 -0
- django_cfg/modules/django_rpc_old/TESTING.md +358 -0
- django_cfg/modules/django_rpc_old/__init__.py +39 -0
- django_cfg/modules/django_rpc_old/client.py +531 -0
- django_cfg/modules/django_rpc_old/config.py +279 -0
- django_cfg/modules/django_rpc_old/exceptions.py +172 -0
- django_cfg/modules/django_tailwind/README.md +478 -0
- django_cfg/modules/django_tailwind/__init__.py +7 -0
- django_cfg/modules/django_tailwind/apps.py +10 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/app.html +5 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +117 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +124 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/components/theme_toggle.html +54 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/components/user_menu.html +116 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/simple.html +46 -0
- django_cfg/modules/django_tailwind/templatetags/__init__.py +1 -0
- django_cfg/modules/django_tailwind/templatetags/tailwind_info.py +185 -0
- django_cfg/modules/django_tasks/__init__.py +29 -0
- django_cfg/modules/django_tasks/factory.py +127 -0
- django_cfg/modules/{django_tasks.py → django_tasks/service.py} +45 -274
- django_cfg/modules/django_tasks/settings.py +107 -0
- django_cfg/modules/django_telegram/__init__.py +29 -0
- django_cfg/modules/{django_telegram.py → django_telegram/service.py} +45 -113
- django_cfg/modules/django_telegram/utils.py +62 -0
- django_cfg/modules/django_twilio/__init__.py +54 -107
- django_cfg/modules/django_twilio/_imports.py +30 -0
- django_cfg/modules/django_twilio/base.py +192 -0
- django_cfg/modules/django_twilio/email_otp.py +227 -0
- django_cfg/modules/django_twilio/sendgrid_service.py +1 -1
- django_cfg/modules/django_twilio/simple_service.py +1 -2
- django_cfg/modules/django_twilio/sms.py +94 -0
- django_cfg/modules/django_twilio/twilio_service.py +2 -3
- django_cfg/modules/django_twilio/unified.py +310 -0
- django_cfg/modules/django_twilio/utils.py +190 -0
- django_cfg/modules/django_twilio/whatsapp.py +137 -0
- django_cfg/modules/django_unfold/callbacks/base.py +198 -7
- django_cfg/modules/django_unfold/callbacks/main.py +102 -10
- django_cfg/modules/django_unfold/dashboard.py +65 -43
- django_cfg/modules/django_unfold/models/config.py +13 -12
- django_cfg/modules/django_unfold/models/navigation.py +8 -3
- django_cfg/modules/django_unfold/models/tabs.py +2 -2
- django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +102 -0
- django_cfg/registry/core.py +24 -26
- django_cfg/registry/modules.py +5 -2
- django_cfg/registry/services.py +20 -3
- django_cfg/registry/third_party.py +8 -8
- django_cfg/static/admin/css/dashboard.css +260 -0
- django_cfg/static/admin/js/commands.js +171 -0
- django_cfg/static/admin/js/dashboard.js +126 -0
- django_cfg/templates/admin/components/management_commands.js +375 -0
- django_cfg/templates/admin/components/progress_bar.html +18 -23
- django_cfg/templates/admin/examples/component_class_example.html +156 -0
- django_cfg/templates/admin/index.html +48 -20
- django_cfg/templates/admin/index_new.html +106 -0
- django_cfg/templates/admin/layouts/base_dashboard.html +60 -0
- django_cfg/templates/admin/layouts/dashboard_with_tabs.html +1 -20
- django_cfg/templates/admin/sections/commands_section.html +626 -0
- django_cfg/templates/admin/sections/overview_section.html +112 -0
- django_cfg/templates/admin/sections/stats_section.html +35 -0
- django_cfg/templates/admin/sections/system_section.html +99 -0
- django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md +322 -0
- django_cfg/templates/admin/snippets/components/activity_tracker.html +85 -47
- django_cfg/templates/admin/snippets/components/charts_section.html +154 -64
- django_cfg/templates/admin/snippets/components/django_commands.html +3 -3
- django_cfg/templates/admin/snippets/components/recent_activity_improved.html +25 -0
- django_cfg/templates/admin/snippets/components/recent_users_table.html +1 -1
- django_cfg/templates/admin/snippets/components/system_metrics.html +179 -93
- django_cfg/templates/admin/snippets/zones/zones_table.html +2 -2
- django_cfg/templatetags/django_cfg.py +7 -1
- django_cfg/utils/smart_defaults.py +4 -4
- django_cfg-1.4.3.dist-info/METADATA +533 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/RECORD +432 -195
- django_cfg/apps/accounts/utils/auth_email_service.py +0 -84
- django_cfg/apps/payments/services/providers/nowpayments/parsers.py +0 -879
- django_cfg/core/generation.py +0 -621
- django_cfg/management/commands/validate_config.py +0 -189
- django_cfg/models/database.py +0 -480
- django_cfg/models/drf.py +0 -272
- django_cfg/models/ngrok.py +0 -122
- django_cfg/models/services.py +0 -440
- django_cfg/models/tasks.py +0 -550
- django_cfg/modules/django_twilio/service.py +0 -942
- django_cfg/template_archive/django_sample.zip +0 -0
- django_cfg/templates/rest_framework/api.html +0 -12
- django_cfg/utils/toolkit.py +0 -703
- django_cfg-1.3.13.dist-info/METADATA +0 -1029
- /django_cfg/apps/accounts/management/commands/{test_otp.py → otp_test.py} +0 -0
- /django_cfg/core/{environment.py → environment/detector.py} +0 -0
- /django_cfg/models/{cors.py → api/cors.py} +0 -0
- /django_cfg/models/{jwt.py → api/jwt.py} +0 -0
- /django_cfg/models/{base.py → base/config.py} +0 -0
- /django_cfg/models/{cfg.py → base/module.py} +0 -0
- /django_cfg/models/{revolution.py → django/revolution.py} +0 -0
- /django_cfg/modules/{dramatiq_setup.py → django_tasks/dramatiq_setup.py} +0 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/WHEEL +0 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.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
|
-
]
|