wappa 0.1.9__tar.gz → 0.1.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of wappa might be problematic. Click here for more details.

Files changed (301) hide show
  1. {wappa-0.1.9 → wappa-0.1.10}/PKG-INFO +362 -8
  2. wappa-0.1.10/README.md +364 -0
  3. {wappa-0.1.9 → wappa-0.1.10}/pyproject.toml +1 -1
  4. {wappa-0.1.9 → wappa-0.1.10}/uv.lock +1 -1
  5. {wappa-0.1.9 → wappa-0.1.10}/wappa/__init__.py +4 -5
  6. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/controllers/webhook_controller.py +5 -2
  7. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/dependencies/__init__.py +0 -5
  8. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/middleware/error_handler.py +4 -4
  9. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/middleware/owner.py +11 -5
  10. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/routes/webhooks.py +2 -2
  11. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/__init__.py +1 -1
  12. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/init/app/main.py +2 -1
  13. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/init/app/master_event.py +5 -3
  14. wappa-0.1.10/wappa/cli/examples/json_cache_example/app/__init__.py +1 -0
  15. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/app/main.py +56 -44
  16. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/app/master_event.py +181 -145
  17. wappa-0.1.10/wappa/cli/examples/json_cache_example/app/models/__init__.py +1 -0
  18. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/app/models/json_demo_models.py +32 -51
  19. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/app/scores/__init__.py +2 -2
  20. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/app/scores/score_base.py +52 -46
  21. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/app/scores/score_cache_statistics.py +70 -62
  22. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/app/scores/score_message_history.py +41 -44
  23. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/app/scores/score_state_commands.py +83 -71
  24. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/app/scores/score_user_management.py +73 -57
  25. {wappa-0.1.9/wappa/cli/examples/redis_cache_example → wappa-0.1.10/wappa/cli/examples/json_cache_example}/app/utils/__init__.py +2 -2
  26. {wappa-0.1.9/wappa/cli/examples/redis_cache_example → wappa-0.1.10/wappa/cli/examples/json_cache_example}/app/utils/cache_utils.py +54 -56
  27. {wappa-0.1.9/wappa/cli/examples/redis_cache_example → wappa-0.1.10/wappa/cli/examples/json_cache_example}/app/utils/message_utils.py +85 -80
  28. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/openai_transcript/app/main.py +2 -1
  29. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/openai_transcript/app/master_event.py +31 -22
  30. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/openai_transcript/app/openai_utils/__init__.py +1 -1
  31. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/openai_transcript/app/openai_utils/audio_processing.py +37 -24
  32. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/app/__init__.py +1 -1
  33. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/app/main.py +56 -44
  34. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/app/master_event.py +181 -145
  35. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/app/models/redis_demo_models.py +31 -50
  36. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/app/scores/__init__.py +2 -2
  37. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/app/scores/score_base.py +52 -46
  38. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/app/scores/score_cache_statistics.py +70 -62
  39. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/app/scores/score_message_history.py +41 -44
  40. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/app/scores/score_state_commands.py +83 -71
  41. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/app/scores/score_user_management.py +73 -57
  42. {wappa-0.1.9/wappa/cli/examples/json_cache_example → wappa-0.1.10/wappa/cli/examples/redis_cache_example}/app/utils/__init__.py +2 -2
  43. {wappa-0.1.9/wappa/cli/examples/json_cache_example → wappa-0.1.10/wappa/cli/examples/redis_cache_example}/app/utils/cache_utils.py +54 -56
  44. {wappa-0.1.9/wappa/cli/examples/json_cache_example → wappa-0.1.10/wappa/cli/examples/redis_cache_example}/app/utils/message_utils.py +85 -80
  45. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/simple_echo_example/app/__init__.py +1 -1
  46. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/simple_echo_example/app/main.py +41 -33
  47. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/simple_echo_example/app/master_event.py +78 -57
  48. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/__init__.py +1 -1
  49. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/handlers/__init__.py +1 -1
  50. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/handlers/command_handlers.py +134 -126
  51. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/handlers/message_handlers.py +237 -229
  52. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/handlers/state_handlers.py +170 -148
  53. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/main.py +51 -39
  54. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/master_event.py +179 -120
  55. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/models/__init__.py +1 -1
  56. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/models/state_models.py +113 -104
  57. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/models/user_models.py +92 -76
  58. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/models/webhook_metadata.py +109 -83
  59. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/utils/__init__.py +1 -1
  60. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/utils/cache_utils.py +132 -113
  61. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/utils/media_handler.py +175 -132
  62. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/utils/metadata_extractor.py +126 -87
  63. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/main.py +9 -4
  64. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/__init__.py +18 -23
  65. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/config/settings.py +7 -5
  66. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/events/default_handlers.py +1 -1
  67. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/factory/wappa_builder.py +38 -25
  68. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/plugins/redis_plugin.py +1 -3
  69. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/plugins/wappa_core_plugin.py +7 -6
  70. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/types.py +12 -12
  71. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/wappa_app.py +10 -8
  72. {wappa-0.1.9 → wappa-0.1.10}/wappa/database/__init__.py +3 -4
  73. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/enums/messenger_platform.py +1 -2
  74. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/factories/media_factory.py +5 -20
  75. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/factories/message_factory.py +5 -20
  76. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/factories/messenger_factory.py +2 -4
  77. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/cache_interface.py +7 -7
  78. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/media_interface.py +2 -5
  79. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/models/media_result.py +1 -3
  80. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/models/platforms/platform_config.py +1 -3
  81. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/__init__.py +9 -12
  82. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/handlers/whatsapp_media_handler.py +20 -22
  83. {wappa-0.1.9 → wappa-0.1.10}/wappa/models/__init__.py +27 -35
  84. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/__init__.py +12 -15
  85. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/cache_factory.py +0 -1
  86. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/json/__init__.py +1 -1
  87. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/json/cache_adapters.py +37 -25
  88. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/json/handlers/state_handler.py +60 -52
  89. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/json/handlers/table_handler.py +51 -49
  90. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/json/handlers/user_handler.py +71 -55
  91. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/json/handlers/utils/file_manager.py +42 -39
  92. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/json/handlers/utils/key_factory.py +1 -1
  93. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/json/handlers/utils/serialization.py +13 -11
  94. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/json/json_cache_factory.py +4 -8
  95. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/json/storage_manager.py +66 -79
  96. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/memory/__init__.py +1 -1
  97. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/memory/cache_adapters.py +37 -25
  98. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/memory/handlers/state_handler.py +62 -52
  99. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/memory/handlers/table_handler.py +59 -53
  100. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/memory/handlers/user_handler.py +75 -55
  101. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/memory/handlers/utils/key_factory.py +1 -1
  102. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/memory/handlers/utils/memory_store.py +75 -71
  103. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/memory/handlers/utils/ttl_manager.py +59 -67
  104. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/memory/memory_cache_factory.py +3 -7
  105. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/memory/storage_manager.py +52 -62
  106. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/cache_adapters.py +27 -21
  107. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/ops.py +11 -11
  108. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_client.py +4 -6
  109. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_manager.py +12 -4
  110. {wappa-0.1.9 → wappa-0.1.10}/wappa/processors/factory.py +5 -5
  111. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/factory.py +2 -5
  112. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/errors.py +3 -12
  113. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/validators.py +3 -3
  114. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/__init__.py +17 -18
  115. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/factory.py +3 -5
  116. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/__init__.py +10 -13
  117. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/audio.py +0 -4
  118. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/document.py +1 -9
  119. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/errors.py +3 -12
  120. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/location.py +1 -21
  121. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/sticker.py +1 -5
  122. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/text.py +0 -6
  123. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/video.py +1 -20
  124. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/status_models.py +2 -2
  125. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/validators.py +3 -3
  126. wappa-0.1.9/README.md +0 -10
  127. wappa-0.1.9/wappa/cli/examples/json_cache_example/app/__init__.py +0 -1
  128. wappa-0.1.9/wappa/cli/examples/json_cache_example/app/models/__init__.py +0 -1
  129. {wappa-0.1.9 → wappa-0.1.10}/.gitignore +0 -0
  130. {wappa-0.1.9 → wappa-0.1.10}/.python-version +0 -0
  131. {wappa-0.1.9 → wappa-0.1.10}/LICENSE +0 -0
  132. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/__init__.py +0 -0
  133. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/controllers/__init__.py +0 -0
  134. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/dependencies/whatsapp_dependencies.py +0 -0
  135. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/dependencies/whatsapp_media_dependencies.py +0 -0
  136. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/middleware/__init__.py +0 -0
  137. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/middleware/request_logging.py +0 -0
  138. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/routes/__init__.py +0 -0
  139. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/routes/health.py +0 -0
  140. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/routes/whatsapp/__init__.py +0 -0
  141. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/routes/whatsapp/whatsapp_interactive.py +0 -0
  142. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/routes/whatsapp/whatsapp_media.py +0 -0
  143. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/routes/whatsapp/whatsapp_messages.py +0 -0
  144. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/routes/whatsapp/whatsapp_specialized.py +0 -0
  145. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/routes/whatsapp/whatsapp_templates.py +0 -0
  146. {wappa-0.1.9 → wappa-0.1.10}/wappa/api/routes/whatsapp_combined.py +0 -0
  147. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/init/.env.example +0 -0
  148. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/init/.gitignore +0 -0
  149. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/init/app/__init__.py +0 -0
  150. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/.env.example +0 -0
  151. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/.gitignore +0 -0
  152. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/json_cache_example/README.md +0 -0
  153. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/openai_transcript/.gitignore +0 -0
  154. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/openai_transcript/README.md +0 -0
  155. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/openai_transcript/app/__init__.py +0 -0
  156. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/.env.example +0 -0
  157. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/.gitignore +0 -0
  158. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/redis_cache_example/README.md +0 -0
  159. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/simple_echo_example/.env.example +0 -0
  160. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/simple_echo_example/.gitignore +0 -0
  161. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/simple_echo_example/README.md +0 -0
  162. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/.dockerignore +0 -0
  163. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/.env.example +0 -0
  164. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/.gitignore +0 -0
  165. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/Dockerfile +0 -0
  166. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/RAILWAY_DEPLOYMENT.md +0 -0
  167. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/README.md +0 -0
  168. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/media/README.md +0 -0
  169. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/media/buttons/README.md +0 -0
  170. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/media/buttons/kitty.png +0 -0
  171. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/media/buttons/puppy.png +0 -0
  172. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/media/list/README.md +0 -0
  173. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/media/list/audio.mp3 +0 -0
  174. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/media/list/document.pdf +0 -0
  175. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/media/list/image.png +0 -0
  176. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/app/media/list/video.mp4 +0 -0
  177. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/docker-compose.yml +0 -0
  178. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/nginx.conf +0 -0
  179. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/examples/wappa_full_example/railway.toml +0 -0
  180. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/templates/__init__.py.template +0 -0
  181. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/templates/env.template +0 -0
  182. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/templates/gitignore.template +0 -0
  183. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/templates/main.py.template +0 -0
  184. {wappa-0.1.9 → wappa-0.1.10}/wappa/cli/templates/master_event.py.template +0 -0
  185. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/config/__init__.py +0 -0
  186. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/events/__init__.py +0 -0
  187. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/events/event_dispatcher.py +0 -0
  188. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/events/event_handler.py +0 -0
  189. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/events/webhook_factory.py +0 -0
  190. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/factory/__init__.py +0 -0
  191. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/factory/plugin.py +0 -0
  192. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/logging/__init__.py +0 -0
  193. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/logging/context.py +0 -0
  194. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/logging/logger.py +0 -0
  195. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/plugins/__init__.py +0 -0
  196. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/plugins/auth_plugin.py +0 -0
  197. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/plugins/cors_plugin.py +0 -0
  198. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/plugins/custom_middleware_plugin.py +0 -0
  199. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/plugins/database_plugin.py +0 -0
  200. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/plugins/rate_limit_plugin.py +0 -0
  201. {wappa-0.1.9 → wappa-0.1.10}/wappa/core/plugins/webhook_plugin.py +0 -0
  202. {wappa-0.1.9 → wappa-0.1.10}/wappa/database/adapter.py +0 -0
  203. {wappa-0.1.9 → wappa-0.1.10}/wappa/database/adapters/__init__.py +0 -0
  204. {wappa-0.1.9 → wappa-0.1.10}/wappa/database/adapters/mysql_adapter.py +0 -0
  205. {wappa-0.1.9 → wappa-0.1.10}/wappa/database/adapters/postgresql_adapter.py +0 -0
  206. {wappa-0.1.9 → wappa-0.1.10}/wappa/database/adapters/sqlite_adapter.py +0 -0
  207. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/__init__.py +0 -0
  208. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/builders/__init__.py +0 -0
  209. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/builders/message_builder.py +0 -0
  210. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/entities/__init__.py +0 -0
  211. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/factories/__init__.py +0 -0
  212. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/__init__.py +0 -0
  213. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/base_repository.py +0 -0
  214. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/cache_factory.py +0 -0
  215. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/expiry_repository.py +0 -0
  216. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/messaging_interface.py +0 -0
  217. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/pubsub_repository.py +0 -0
  218. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/repository_factory.py +0 -0
  219. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/shared_state_repository.py +0 -0
  220. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/state_repository.py +0 -0
  221. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/tables_repository.py +0 -0
  222. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/interfaces/user_repository.py +0 -0
  223. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/models/platforms/__init__.py +0 -0
  224. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/services/__init__.py +0 -0
  225. {wappa-0.1.9 → wappa-0.1.10}/wappa/domain/services/tenant_credentials_service.py +0 -0
  226. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/__init__.py +0 -0
  227. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/client/__init__.py +0 -0
  228. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/client/whatsapp_client.py +0 -0
  229. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/handlers/__init__.py +0 -0
  230. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/handlers/whatsapp_interactive_handler.py +0 -0
  231. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/handlers/whatsapp_specialized_handler.py +0 -0
  232. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/handlers/whatsapp_template_handler.py +0 -0
  233. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/messenger/__init__.py +0 -0
  234. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/messenger/whatsapp_messenger.py +0 -0
  235. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/models/__init__.py +0 -0
  236. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/models/basic_models.py +0 -0
  237. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/models/interactive_models.py +0 -0
  238. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/models/media_models.py +0 -0
  239. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/models/specialized_models.py +0 -0
  240. {wappa-0.1.9 → wappa-0.1.10}/wappa/messaging/whatsapp/models/template_models.py +0 -0
  241. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/README.md +0 -0
  242. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/__init__.py +0 -0
  243. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_cache_factory.py +0 -0
  244. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_handler/__init__.py +0 -0
  245. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_handler/state_handler.py +0 -0
  246. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_handler/table.py +0 -0
  247. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_handler/user.py +0 -0
  248. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_handler/utils/__init__.py +0 -0
  249. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_handler/utils/key_factory.py +0 -0
  250. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_handler/utils/serde.py +0 -0
  251. {wappa-0.1.9 → wappa-0.1.10}/wappa/persistence/redis/redis_handler/utils/tenant_cache.py +0 -0
  252. {wappa-0.1.9 → wappa-0.1.10}/wappa/processors/__init__.py +0 -0
  253. {wappa-0.1.9 → wappa-0.1.10}/wappa/processors/base_processor.py +0 -0
  254. {wappa-0.1.9 → wappa-0.1.10}/wappa/processors/whatsapp_processor.py +0 -0
  255. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/__init__.py +0 -0
  256. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/core/__init__.py +0 -0
  257. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/core/base_message.py +0 -0
  258. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/core/base_status.py +0 -0
  259. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/core/base_webhook.py +0 -0
  260. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/core/types.py +0 -0
  261. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/core/webhook_interfaces/__init__.py +0 -0
  262. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/core/webhook_interfaces/base_components.py +0 -0
  263. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/core/webhook_interfaces/universal_webhooks.py +0 -0
  264. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/__init__.py +0 -0
  265. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/base_models.py +0 -0
  266. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/__init__.py +0 -0
  267. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/audio.py +0 -0
  268. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/button.py +0 -0
  269. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/contact.py +0 -0
  270. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/document.py +0 -0
  271. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/image.py +0 -0
  272. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/interactive.py +0 -0
  273. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/location.py +0 -0
  274. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/order.py +0 -0
  275. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/reaction.py +0 -0
  276. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/sticker.py +0 -0
  277. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/system.py +0 -0
  278. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/text.py +0 -0
  279. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/unsupported.py +0 -0
  280. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/message_types/video.py +0 -0
  281. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/status_models.py +0 -0
  282. {wappa-0.1.9 → wappa-0.1.10}/wappa/schemas/whatsapp/webhook_container.py +0 -0
  283. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/core/__init__.py +0 -0
  284. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/core/base_message.py +0 -0
  285. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/core/base_status.py +0 -0
  286. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/core/base_webhook.py +0 -0
  287. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/core/types.py +0 -0
  288. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/core/webhook_interfaces/__init__.py +0 -0
  289. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/core/webhook_interfaces/base_components.py +0 -0
  290. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/core/webhook_interfaces/universal_webhooks.py +0 -0
  291. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/base_models.py +0 -0
  292. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/__init__.py +0 -0
  293. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/button.py +0 -0
  294. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/contact.py +0 -0
  295. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/image.py +0 -0
  296. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/interactive.py +0 -0
  297. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/order.py +0 -0
  298. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/reaction.py +0 -0
  299. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/system.py +0 -0
  300. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/message_types/unsupported.py +0 -0
  301. {wappa-0.1.9 → wappa-0.1.10}/wappa/webhooks/whatsapp/webhook_container.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wappa
3
- Version: 0.1.9
3
+ Version: 0.1.10
4
4
  Summary: Open Source Framework to develop smart Workflows, Agents and full chat applications through WhatsApp
5
5
  Project-URL: Homepage, https://wappa.mimeia.com
6
6
  Project-URL: Documentation, https://wappa.mimeia.com/docs
@@ -240,13 +240,367 @@ Requires-Dist: typer>=0.9.0
240
240
  Requires-Dist: uvicorn[standard]>=0.24.0
241
241
  Description-Content-Type: text/markdown
242
242
 
243
- # wappa
244
- Open Source Framework to develop smart Workflows, Agents and full chat appllications through WhatsApp
243
+ # Wappa 🤖
245
244
 
246
- So the idea of this project is to take the /app and refactor it to break this up and make it into an opensource project for example things I want:
247
- 1) from wapp import WhatsAppMessenger -> So then throughoutt flow in /events I can just initialize the WhatsAppMessenger and send all the messages
248
- 2) have a terminal like ruff or black named wappa so when the user writes uvx wappa init or uv run wappa init a terminal opens to generate a clean project
245
+ **Open Source Framework for WhatsApp Business Applications**
249
246
 
250
- and yeah I mean right now I have in this project, Airtable, Payment processor I want to delete does services and payment webhooks... just stick with the WhatsApp webhooks and the Messenger interface, have the event_dispatcher as the final destination of all webhooks... and literally All i want when the client hits init is just the webhooks dispatching to the eventhandler all the other folders and scaffolding shoudl be imported through the Wappa module!
247
+ Build intelligent WhatsApp bots, workflows, and chat applications with clean architecture and modern Python.
251
248
 
252
- so yeah the purpose of this project is this
249
+ [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
250
+ [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
251
+ [![FastAPI](https://img.shields.io/badge/FastAPI-0.115+-green.svg)](https://fastapi.tiangolo.com)
252
+ [![WhatsApp Business API](https://img.shields.io/badge/WhatsApp-Business%20API-25D366.svg)](https://developers.facebook.com/docs/whatsapp)
253
+
254
+ ---
255
+
256
+ ## 🚀 What is Wappa?
257
+
258
+ Wappa is a modern Python framework that transforms WhatsApp Business API into a powerful platform for building:
259
+
260
+ - **🤖 Smart Chatbots** - AI-powered conversational experiences
261
+ - **📋 Workflows** - Multi-step business processes
262
+ - **🎯 Agents** - Intelligent customer service automation
263
+ - **💬 Chat Applications** - Full-featured messaging platforms
264
+
265
+ **Built for developers who want clean code, not webhook complexity.**
266
+
267
+ ## ✨ Key Features
268
+
269
+ ### 🎯 **Simple & Clean**
270
+ ```python
271
+ from wappa import Wappa, WappaEventHandler
272
+
273
+ class MyBot(WappaEventHandler):
274
+ async def process_message(self, webhook):
275
+ await self.messenger.send_text("Hello!", webhook.user.user_id)
276
+
277
+ app = Wappa()
278
+ app.set_event_handler(MyBot())
279
+ app.run()
280
+ ```
281
+
282
+ ### 🏗️ **Production-Ready Architecture**
283
+ - **Clean Architecture** - Domain-driven design with dependency injection
284
+ - **Type-Safe** - Full Pydantic models for all WhatsApp data structures
285
+ - **Multi-Tenant** - Built for scaling across multiple business numbers
286
+ - **Plugin System** - Extensible with Redis, CORS, rate limiting, and custom plugins
287
+
288
+ ### 📱 **Complete WhatsApp Support**
289
+ - **All Message Types** - Text, media, interactive buttons, lists, templates
290
+ - **Rich Interactions** - Buttons, lists, call-to-action messages
291
+ - **Media Handling** - Images, videos, audio, documents with automatic upload/download
292
+ - **Templates** - Pre-approved business message templates
293
+
294
+ ### 🛠️ **Developer Experience**
295
+ ```bash
296
+ # Initialize new project
297
+ wappa init my-bot
298
+
299
+ # Start development server with auto-reload
300
+ wappa dev app/main.py
301
+
302
+ # Browse interactive examples
303
+ wappa examples
304
+ ```
305
+
306
+ ### 💾 **Flexible State Management**
307
+ ```python
308
+ # Memory, JSON file, or Redis caching
309
+ app = Wappa(cache="redis") # or "memory" or "json"
310
+
311
+ # Automatic state persistence
312
+ await self.state_cache.set("conversation", {"step": "greeting"})
313
+ ```
314
+
315
+ ## 📦 Installation
316
+
317
+ ### Using uv (Recommended)
318
+ ```bash
319
+ # Create new project
320
+ uv init my-wappa-project
321
+ cd my-wappa-project
322
+
323
+ # Add Wappa
324
+ uv add wappa
325
+
326
+ # Initialize project structure
327
+ wappa init .
328
+ ```
329
+
330
+ ### Using pip
331
+ ```bash
332
+ pip install wappa
333
+
334
+ # Initialize new project
335
+ wappa init my-wappa-project
336
+ cd my-wappa-project
337
+ ```
338
+
339
+ ### Using Poetry
340
+ ```bash
341
+ poetry new my-wappa-project
342
+ cd my-wappa-project
343
+ poetry add wappa
344
+
345
+ # Initialize project structure
346
+ wappa init .
347
+ ```
348
+
349
+ ## 🏃‍♂️ Quick Start
350
+
351
+ ### 1. Get WhatsApp Business API Credentials
352
+
353
+ 1. Visit [Meta for Developers](https://developers.facebook.com)
354
+ 2. Create a WhatsApp Business App
355
+ 3. Get your credentials:
356
+ - **Access Token**
357
+ - **Phone Number ID**
358
+ - **Business Account ID**
359
+
360
+ ### 2. Create Your Bot
361
+
362
+ ```bash
363
+ # Initialize project
364
+ wappa init my-bot
365
+ cd my-bot
366
+
367
+ # Configure environment
368
+ cp .env.example .env
369
+ # Edit .env with your WhatsApp credentials
370
+ ```
371
+
372
+ ### 3. Run Development Server
373
+
374
+ ```bash
375
+ # Start with auto-reload
376
+ wappa dev app/main.py
377
+
378
+ # Or manually
379
+ uv run python -m app.main
380
+ ```
381
+
382
+ ### 4. Test Your Bot
383
+
384
+ Send a message to your WhatsApp Business number and watch it echo back!
385
+
386
+ ## 🎛️ Architecture Overview
387
+
388
+ ```mermaid
389
+ graph TD
390
+ A[👤 WhatsApp User] -->|Message| B[📡 Webhook Endpoint]
391
+ B --> C[🔄 Event Dispatcher]
392
+ C --> D[⚡ Your Event Handler]
393
+ D --> E[💬 Messenger Interface]
394
+ E --> F[📱 WhatsApp API]
395
+
396
+ D --> G[💾 State Management]
397
+ D --> H[🧠 Business Logic]
398
+ G --> I[🗄️ Redis/Memory/JSON Cache]
399
+ H --> J[🔗 External Services]
400
+
401
+ style D fill:#333481,color:#fff,stroke:#333481,stroke-width:3px
402
+ style E fill:#4A90E2,color:#fff,stroke:#4A90E2,stroke-width:3px
403
+ style G fill:#333481,color:#fff,stroke:#333481,stroke-width:3px
404
+ style A fill:#25D366,color:#fff,stroke:#25D366,stroke-width:3px
405
+ style F fill:#25D366,color:#fff,stroke:#25D366,stroke-width:3px
406
+ ```
407
+
408
+ - **Event-Driven**: Webhook → Event Handler → Response
409
+ - **Type-Safe**: Full Pydantic models for all WhatsApp data structures
410
+ - **FastAPI Core**: Built on modern async Python with automatic OpenAPI docs
411
+ - **Production Ready**: Docker support, Redis caching, structured logging
412
+
413
+ ## 📚 Documentation
414
+
415
+ **📖 [Complete Documentation](https://wappa.mimeia.com/docs)**
416
+
417
+ ### Quick Links
418
+
419
+ - **🚀 [Quick Start](https://wappa.mimeia.com/docs/getting-started)** - Get running in 5 minutes
420
+ - **🏗️ [Architecture Guide](https://wappa.mimeia.com/docs/concepts/architecture)** - Understanding the framework
421
+ - **📡 [API Reference](https://wappa.mimeia.com/docs/api/messaging)** - Complete messaging API
422
+ - **💾 [State Management](https://wappa.mimeia.com/docs/concepts/state-management)** - Caching and persistence
423
+ - **🚀 [Deploy to Railway](https://wappa.mimeia.com/docs/deployment/railway)** - Production deployment
424
+ - **🛠️ [WhatsApp Setup](https://wappa.mimeia.com/docs/setup/whatsapp-setup)** - Configure WhatsApp Business API
425
+
426
+ ### Example Projects
427
+
428
+ Explore 6 complete example applications:
429
+
430
+ ```bash
431
+ # Browse examples interactively
432
+ wappa examples
433
+
434
+ # Copy specific example
435
+ wappa examples redis-cache-demo
436
+ ```
437
+
438
+ - **Simple Echo** - Basic message echoing
439
+ - **JSON Cache Demo** - File-based state persistence
440
+ - **Redis Cache Demo** - High-performance caching
441
+ - **OpenAI Transcription** - Voice message processing
442
+ - **Full-Featured Bot** - Complete production example
443
+ - **Basic Project** - Minimal setup template
444
+
445
+ ## 🛠️ Advanced Usage
446
+
447
+ ### Builder Pattern for Complex Apps
448
+
449
+ ```python
450
+ from wappa import WappaBuilder
451
+
452
+ app = await (WappaBuilder()
453
+ .with_whatsapp(
454
+ token="your_token",
455
+ phone_id="your_phone_id",
456
+ business_id="your_business_id"
457
+ )
458
+ .with_redis_cache("redis://localhost:6379")
459
+ .with_cors_enabled()
460
+ .with_rate_limiting(requests_per_minute=100)
461
+ .build())
462
+
463
+ app.set_event_handler(MyAdvancedHandler())
464
+ app.run()
465
+ ```
466
+
467
+ ### Plugin System
468
+
469
+ ```python
470
+ from wappa.plugins import DatabasePlugin, CorsPlugin
471
+
472
+ app = Wappa(cache="redis")
473
+ app.add_plugin(DatabasePlugin("postgresql://..."))
474
+ app.add_plugin(CorsPlugin(allow_origins=["*"]))
475
+ app.set_event_handler(MyHandler())
476
+ app.run()
477
+ ```
478
+
479
+ ### CLI Commands
480
+
481
+ ```bash
482
+ # Project management
483
+ wappa init [directory] # Initialize new project
484
+ wappa examples [target] # Browse/copy examples
485
+
486
+ # Development
487
+ wappa dev app/main.py # Development server with auto-reload
488
+ wappa prod app/main.py # Production server
489
+
490
+ # Help
491
+ wappa --help # Show all commands
492
+ ```
493
+
494
+ ## 🚀 Deployment
495
+
496
+ ### Railway (Recommended)
497
+
498
+ ```bash
499
+ # Install Railway CLI
500
+ npm install -g @railway/cli
501
+
502
+ # Login and deploy
503
+ railway login
504
+ railway init
505
+ railway add redis
506
+ railway up
507
+
508
+ # Set environment variables
509
+ railway variables set WP_ACCESS_TOKEN=your_token
510
+ railway variables set WP_PHONE_ID=your_phone_id
511
+ railway variables set WP_BID=your_business_id
512
+ ```
513
+
514
+ See [complete Railway deployment guide](https://wappa.mimeia.com/docs/deployment/railway).
515
+
516
+ ### Docker
517
+
518
+ ```dockerfile
519
+ FROM python:3.12-slim
520
+
521
+ WORKDIR /app
522
+ COPY . .
523
+
524
+ RUN pip install uv
525
+ RUN uv sync --frozen
526
+
527
+ EXPOSE 8000
528
+ CMD ["uv", "run", "python", "-m", "app.main"]
529
+ ```
530
+
531
+ ## 🧪 Development
532
+
533
+ ### Setup Development Environment
534
+
535
+ ```bash
536
+ # Clone repository
537
+ git clone https://github.com/sashanclrp/wappa.git
538
+ cd wappa
539
+
540
+ # Install dependencies
541
+ uv sync --group dev
542
+
543
+ # Run tests
544
+ uv run pytest
545
+
546
+ # Code formatting
547
+ uv run ruff check .
548
+ uv run ruff format .
549
+ ```
550
+
551
+ ### Project Structure
552
+
553
+ ```
554
+ wappa/
555
+ ├── wappa/ # Core framework
556
+ │ ├── core/ # Application core & plugins
557
+ │ ├── messaging/ # WhatsApp messaging implementation
558
+ │ ├── persistence/ # Cache backends (Memory/JSON/Redis)
559
+ │ ├── cli/ # CLI tools & project templates
560
+ │ └── api/ # FastAPI routes & dependencies
561
+ ├── examples/ # Example applications
562
+ ├── docs/ # Documentation source
563
+ └── tests/ # Test suite
564
+ ```
565
+
566
+ ## 🤝 Community & Support
567
+
568
+ ### 💬 **Join the Community**
569
+ - **💭 [Discord Community](https://discord.gg/wappa)** - Get help, share projects, and connect with other developers
570
+ - **🐛 [GitHub Issues](https://github.com/sashanclrp/wappa/issues)** - Bug reports and feature requests
571
+ - **📖 [GitHub Discussions](https://github.com/sashanclrp/wappa/discussions)** - Questions and community discussions
572
+
573
+ ### 📞 **Get Support**
574
+ - **📚 [Documentation](https://wappa.mimeia.com/docs)** - Comprehensive guides and API reference
575
+ - **💡 [Examples](https://wappa.mimeia.com/docs/resources/examples)** - 6 complete working examples
576
+ - **🔧 [Configuration Guide](https://wappa.mimeia.com/docs/setup/whatsapp-setup)** - WhatsApp Business API setup
577
+
578
+ ### 🤝 **Contributing**
579
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
580
+
581
+ - **🐛 Found a bug?** Open an [issue](https://github.com/sashanclrp/wappa/issues)
582
+ - **💡 Have an idea?** Start a [discussion](https://github.com/sashanclrp/wappa/discussions)
583
+ - **🔧 Want to contribute?** Check out [good first issues](https://github.com/sashanclrp/wappa/labels/good%20first%20issue)
584
+
585
+ ## 📋 Requirements
586
+
587
+ - **Python 3.12+** - Modern Python with latest type hints
588
+ - **WhatsApp Business API** - Meta for Developers account
589
+ - **Redis** (optional) - For production caching and state management
590
+
591
+ ## 📄 License
592
+
593
+ This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
594
+
595
+ ## 🙏 Acknowledgments
596
+
597
+ - **Meta** - For the WhatsApp Business API
598
+ - **FastAPI** - For the excellent async Python framework
599
+ - **Redis** - For high-performance caching
600
+ - **Open Source Community** - For inspiration and contributions
601
+
602
+ ---
603
+
604
+ **Built with ❤️ by [Mimeia](https://mimeia.com) • Open Source • Apache 2.0 License**
605
+
606
+ *Transform your business communication with WhatsApp automation.*