wappa 0.1.5__py3-none-any.whl → 0.1.7__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.
Potentially problematic release.
This version of wappa might be problematic. Click here for more details.
- wappa/__init__.py +13 -69
- wappa/cli/examples/init/.gitignore +69 -0
- wappa/cli/examples/init/pyproject.toml +7 -0
- wappa/cli/examples/json_cache_example/.gitignore +69 -0
- wappa/cli/examples/json_cache_example/README.md +190 -0
- wappa/cli/examples/openai_transcript/.gitignore +10 -0
- wappa/cli/examples/openai_transcript/README.md +0 -0
- wappa/cli/examples/redis_cache_example/.gitignore +69 -0
- wappa/cli/examples/redis_cache_example/README.md +0 -0
- wappa/cli/examples/simple_echo_example/.gitignore +69 -0
- wappa/cli/examples/simple_echo_example/.python-version +1 -0
- wappa/cli/examples/simple_echo_example/README.md +0 -0
- wappa/cli/examples/simple_echo_example/pyproject.toml +9 -0
- wappa/cli/examples/wappa_full_example/.dockerignore +171 -0
- wappa/cli/examples/wappa_full_example/.gitignore +10 -0
- wappa/cli/examples/wappa_full_example/Dockerfile +85 -0
- wappa/cli/examples/wappa_full_example/RAILWAY_DEPLOYMENT.md +366 -0
- wappa/cli/examples/wappa_full_example/README.md +322 -0
- wappa/cli/examples/wappa_full_example/docker-compose.yml +170 -0
- wappa/cli/examples/wappa_full_example/nginx.conf +177 -0
- wappa/cli/examples/wappa_full_example/railway.toml +30 -0
- wappa/cli/main.py +346 -22
- wappa/cli/templates/__init__.py.template +0 -0
- wappa/cli/templates/env.template +37 -0
- wappa/cli/templates/gitignore.template +165 -0
- wappa/cli/templates/main.py.template +8 -0
- wappa/cli/templates/master_event.py.template +8 -0
- wappa/core/__init__.py +86 -3
- wappa/core/plugins/wappa_core_plugin.py +15 -5
- wappa/database/__init__.py +16 -4
- wappa/domain/interfaces/media_interface.py +57 -3
- wappa/domain/models/media_result.py +43 -0
- wappa/messaging/__init__.py +53 -3
- wappa/messaging/whatsapp/handlers/whatsapp_media_handler.py +112 -4
- wappa/models/__init__.py +103 -0
- wappa/persistence/__init__.py +55 -0
- wappa/webhooks/__init__.py +53 -4
- wappa/webhooks/whatsapp/__init__.py +57 -3
- wappa/webhooks/whatsapp/status_models.py +10 -0
- {wappa-0.1.5.dist-info → wappa-0.1.7.dist-info}/METADATA +7 -25
- {wappa-0.1.5.dist-info → wappa-0.1.7.dist-info}/RECORD +44 -23
- wappa/domain/interfaces/webhooks/__init__.py +0 -1
- wappa/persistence/json/handlers/__init__.py +0 -1
- wappa/persistence/json/handlers/utils/__init__.py +0 -1
- wappa/persistence/memory/handlers/__init__.py +0 -1
- wappa/persistence/memory/handlers/utils/__init__.py +0 -1
- wappa/schemas/webhooks/__init__.py +0 -3
- {wappa-0.1.5.dist-info → wappa-0.1.7.dist-info}/WHEEL +0 -0
- {wappa-0.1.5.dist-info → wappa-0.1.7.dist-info}/entry_points.txt +0 -0
- {wappa-0.1.5.dist-info → wappa-0.1.7.dist-info}/licenses/LICENSE +0 -0
wappa/__init__.py
CHANGED
|
@@ -3,83 +3,27 @@ Wappa - Open Source WhatsApp Business Framework
|
|
|
3
3
|
|
|
4
4
|
A clean, modern Python library for building WhatsApp Business applications
|
|
5
5
|
with minimal setup and maximum flexibility.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from .core.config.settings import settings
|
|
9
|
-
from .core.events import (
|
|
10
|
-
DefaultErrorHandler,
|
|
11
|
-
DefaultHandlerFactory,
|
|
12
|
-
DefaultMessageHandler,
|
|
13
|
-
DefaultStatusHandler,
|
|
14
|
-
ErrorLogStrategy,
|
|
15
|
-
MessageLogStrategy,
|
|
16
|
-
StatusLogStrategy,
|
|
17
|
-
WappaEventHandler,
|
|
18
|
-
WebhookURLFactory,
|
|
19
|
-
webhook_url_factory,
|
|
20
|
-
)
|
|
21
6
|
|
|
22
|
-
|
|
23
|
-
|
|
7
|
+
Clean Import Interface (SRP Compliance):
|
|
8
|
+
- Only framework essentials exposed at top level
|
|
9
|
+
- Domain-specific imports available via wappa.domain paths
|
|
10
|
+
- Follows Clean Architecture principles
|
|
11
|
+
"""
|
|
24
12
|
|
|
25
|
-
#
|
|
26
|
-
from .core.plugins import (
|
|
27
|
-
AuthPlugin,
|
|
28
|
-
CORSPlugin,
|
|
29
|
-
CustomMiddlewarePlugin,
|
|
30
|
-
DatabasePlugin,
|
|
31
|
-
RateLimitPlugin,
|
|
32
|
-
RedisPlugin,
|
|
33
|
-
WebhookPlugin,
|
|
34
|
-
)
|
|
13
|
+
# Framework Essentials Only (SRP: Framework Foundation)
|
|
35
14
|
from .core.wappa_app import Wappa
|
|
15
|
+
from .core.events.event_handler import WappaEventHandler
|
|
16
|
+
from .core.factory import WappaBuilder, WappaPlugin
|
|
36
17
|
|
|
37
|
-
#
|
|
38
|
-
from .
|
|
39
|
-
|
|
40
|
-
# Messaging Interface
|
|
41
|
-
from .domain.interfaces.messaging_interface import IMessenger
|
|
42
|
-
from .messaging.whatsapp.messenger.whatsapp_messenger import WhatsAppMessenger
|
|
43
|
-
|
|
44
|
-
# Redis System
|
|
45
|
-
from .persistence.redis import RedisClient, RedisManager
|
|
18
|
+
# Dynamic version from pyproject.toml
|
|
19
|
+
from .core.config.settings import settings
|
|
46
20
|
|
|
47
21
|
__version__ = settings.version
|
|
22
|
+
|
|
48
23
|
__all__ = [
|
|
49
|
-
# Core Framework
|
|
24
|
+
# Core Framework Components
|
|
50
25
|
"Wappa",
|
|
51
|
-
"WappaEventHandler",
|
|
52
|
-
# Factory System
|
|
26
|
+
"WappaEventHandler",
|
|
53
27
|
"WappaBuilder",
|
|
54
28
|
"WappaPlugin",
|
|
55
|
-
# Core Plugins
|
|
56
|
-
"DatabasePlugin",
|
|
57
|
-
"RedisPlugin",
|
|
58
|
-
"WebhookPlugin",
|
|
59
|
-
"CORSPlugin",
|
|
60
|
-
"AuthPlugin",
|
|
61
|
-
"RateLimitPlugin",
|
|
62
|
-
"CustomMiddlewarePlugin",
|
|
63
|
-
# Database Adapters
|
|
64
|
-
"DatabaseAdapter",
|
|
65
|
-
"PostgreSQLAdapter",
|
|
66
|
-
"SQLiteAdapter",
|
|
67
|
-
"MySQLAdapter",
|
|
68
|
-
# Redis System
|
|
69
|
-
"RedisClient",
|
|
70
|
-
"RedisManager",
|
|
71
|
-
# Webhook Management
|
|
72
|
-
"WebhookURLFactory",
|
|
73
|
-
"webhook_url_factory",
|
|
74
|
-
# Default Handlers
|
|
75
|
-
"DefaultMessageHandler",
|
|
76
|
-
"DefaultStatusHandler",
|
|
77
|
-
"DefaultErrorHandler",
|
|
78
|
-
"DefaultHandlerFactory",
|
|
79
|
-
"MessageLogStrategy",
|
|
80
|
-
"StatusLogStrategy",
|
|
81
|
-
"ErrorLogStrategy",
|
|
82
|
-
# Messaging
|
|
83
|
-
"WhatsAppMessenger",
|
|
84
|
-
"IMessenger",
|
|
85
29
|
]
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Wappa
|
|
2
|
+
logs/
|
|
3
|
+
|
|
4
|
+
# Environment variables
|
|
5
|
+
.env
|
|
6
|
+
.env.local
|
|
7
|
+
.env.development
|
|
8
|
+
.env.production
|
|
9
|
+
|
|
10
|
+
# Python
|
|
11
|
+
__pycache__/
|
|
12
|
+
*.py[cod]
|
|
13
|
+
*$py.class
|
|
14
|
+
*.so
|
|
15
|
+
.Python
|
|
16
|
+
build/
|
|
17
|
+
develop-eggs/
|
|
18
|
+
dist/
|
|
19
|
+
downloads/
|
|
20
|
+
eggs/
|
|
21
|
+
.eggs/
|
|
22
|
+
lib/
|
|
23
|
+
lib64/
|
|
24
|
+
parts/
|
|
25
|
+
sdist/
|
|
26
|
+
var/
|
|
27
|
+
wheels/
|
|
28
|
+
share/python-wheels/
|
|
29
|
+
*.egg-info/
|
|
30
|
+
.installed.cfg
|
|
31
|
+
*.egg
|
|
32
|
+
MANIFEST
|
|
33
|
+
|
|
34
|
+
# Virtual environments
|
|
35
|
+
.venv/
|
|
36
|
+
venv/
|
|
37
|
+
ENV/
|
|
38
|
+
env/
|
|
39
|
+
|
|
40
|
+
# IDE
|
|
41
|
+
.vscode/
|
|
42
|
+
.idea/
|
|
43
|
+
*.swp
|
|
44
|
+
*.swo
|
|
45
|
+
|
|
46
|
+
# OS
|
|
47
|
+
.DS_Store
|
|
48
|
+
Thumbs.db
|
|
49
|
+
|
|
50
|
+
# Logs
|
|
51
|
+
app/logs/
|
|
52
|
+
logs/
|
|
53
|
+
*.log
|
|
54
|
+
|
|
55
|
+
# Redis dumps
|
|
56
|
+
dump.rdb
|
|
57
|
+
|
|
58
|
+
# Temporary files
|
|
59
|
+
.tmp/
|
|
60
|
+
temp/
|
|
61
|
+
tmp/
|
|
62
|
+
|
|
63
|
+
# Coverage reports
|
|
64
|
+
htmlcov/
|
|
65
|
+
.tox/
|
|
66
|
+
.coverage
|
|
67
|
+
.coverage.*
|
|
68
|
+
.cache
|
|
69
|
+
.pytest_cache/
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Wappa
|
|
2
|
+
logs/
|
|
3
|
+
|
|
4
|
+
# Environment variables
|
|
5
|
+
.env
|
|
6
|
+
.env.local
|
|
7
|
+
.env.development
|
|
8
|
+
.env.production
|
|
9
|
+
|
|
10
|
+
# Python
|
|
11
|
+
__pycache__/
|
|
12
|
+
*.py[cod]
|
|
13
|
+
*$py.class
|
|
14
|
+
*.so
|
|
15
|
+
.Python
|
|
16
|
+
build/
|
|
17
|
+
develop-eggs/
|
|
18
|
+
dist/
|
|
19
|
+
downloads/
|
|
20
|
+
eggs/
|
|
21
|
+
.eggs/
|
|
22
|
+
lib/
|
|
23
|
+
lib64/
|
|
24
|
+
parts/
|
|
25
|
+
sdist/
|
|
26
|
+
var/
|
|
27
|
+
wheels/
|
|
28
|
+
share/python-wheels/
|
|
29
|
+
*.egg-info/
|
|
30
|
+
.installed.cfg
|
|
31
|
+
*.egg
|
|
32
|
+
MANIFEST
|
|
33
|
+
|
|
34
|
+
# Virtual environments
|
|
35
|
+
.venv/
|
|
36
|
+
venv/
|
|
37
|
+
ENV/
|
|
38
|
+
env/
|
|
39
|
+
|
|
40
|
+
# IDE
|
|
41
|
+
.vscode/
|
|
42
|
+
.idea/
|
|
43
|
+
*.swp
|
|
44
|
+
*.swo
|
|
45
|
+
|
|
46
|
+
# OS
|
|
47
|
+
.DS_Store
|
|
48
|
+
Thumbs.db
|
|
49
|
+
|
|
50
|
+
# Logs
|
|
51
|
+
app/logs/
|
|
52
|
+
logs/
|
|
53
|
+
*.log
|
|
54
|
+
|
|
55
|
+
# Redis dumps
|
|
56
|
+
dump.rdb
|
|
57
|
+
|
|
58
|
+
# Temporary files
|
|
59
|
+
.tmp/
|
|
60
|
+
temp/
|
|
61
|
+
tmp/
|
|
62
|
+
|
|
63
|
+
# Coverage reports
|
|
64
|
+
htmlcov/
|
|
65
|
+
.tox/
|
|
66
|
+
.coverage
|
|
67
|
+
.coverage.*
|
|
68
|
+
.cache
|
|
69
|
+
.pytest_cache/
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Wappa JSON Cache Example
|
|
2
|
+
|
|
3
|
+
This example demonstrates how to use Wappa's JSON cache backend with a complete WhatsApp bot implementation following SOLID architecture principles.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The JSON Cache Example shows how to build a WhatsApp bot that uses JSON file-based caching for:
|
|
8
|
+
- **User Cache**: User profiles and session data (JSON files)
|
|
9
|
+
- **Table Cache**: Message history and structured data (JSON files)
|
|
10
|
+
- **State Cache**: Application state management (JSON files)
|
|
11
|
+
|
|
12
|
+
## Architecture
|
|
13
|
+
|
|
14
|
+
This example follows **SOLID principles** with a modular score-based architecture:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
app/
|
|
18
|
+
├── main.py # FastAPI application with JSON cache
|
|
19
|
+
├── master_event.py # Main event handler using SOLID architecture
|
|
20
|
+
├── models/ # Pydantic data models
|
|
21
|
+
│ └── json_demo_models.py # User, MessageLog, StateHandler, CacheStats
|
|
22
|
+
├── scores/ # Business logic modules (Single Responsibility)
|
|
23
|
+
│ ├── score_base.py # Abstract base for all scores
|
|
24
|
+
│ ├── score_user_management.py # User profile management
|
|
25
|
+
│ ├── score_message_history.py # Message logging & /HISTORY
|
|
26
|
+
│ ├── score_state_commands.py # /WAPPA, /EXIT commands
|
|
27
|
+
│ └── score_cache_statistics.py # /STATS command & monitoring
|
|
28
|
+
└── utils/ # Utility functions
|
|
29
|
+
├── cache_utils.py # Cache key generation & TTL management
|
|
30
|
+
└── message_utils.py # Message parsing & formatting
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Features
|
|
34
|
+
|
|
35
|
+
### Cache Operations
|
|
36
|
+
- **JSON File Storage**: All data stored in JSON files on disk
|
|
37
|
+
- **TTL Support**: Automatic expiration of cached data
|
|
38
|
+
- **Persistence**: Data survives application restarts
|
|
39
|
+
- **Performance**: Fast file-based operations with JSON serialization
|
|
40
|
+
|
|
41
|
+
### Available Commands
|
|
42
|
+
- `/WAPPA` - Enter special state mode (cached in state layer)
|
|
43
|
+
- `/EXIT` - Exit special state mode
|
|
44
|
+
- `/HISTORY` - View your message history (from table cache)
|
|
45
|
+
- `/STATS` - View JSON cache statistics and health
|
|
46
|
+
|
|
47
|
+
### Score Modules (SOLID Architecture)
|
|
48
|
+
Each score handles a single responsibility:
|
|
49
|
+
|
|
50
|
+
1. **UserManagementScore**: User profiles, welcome messages
|
|
51
|
+
2. **MessageHistoryScore**: Message logging, history retrieval
|
|
52
|
+
3. **StateCommandsScore**: State management, special commands
|
|
53
|
+
4. **CacheStatisticsScore**: Cache monitoring, performance metrics
|
|
54
|
+
|
|
55
|
+
## Configuration
|
|
56
|
+
|
|
57
|
+
### Environment Variables
|
|
58
|
+
```bash
|
|
59
|
+
# WhatsApp Business API (required)
|
|
60
|
+
WHATSAPP_API_URL=https://graph.facebook.com/v18.0
|
|
61
|
+
WHATSAPP_ACCESS_TOKEN=your_access_token
|
|
62
|
+
WHATSAPP_PHONE_NUMBER_ID=your_phone_number_id
|
|
63
|
+
WHATSAPP_VERIFY_TOKEN=your_webhook_verify_token
|
|
64
|
+
WHATSAPP_WEBHOOK_SECRET=your_webhook_secret
|
|
65
|
+
|
|
66
|
+
# Application Settings
|
|
67
|
+
PORT=8000
|
|
68
|
+
LOG_LEVEL=INFO
|
|
69
|
+
ENVIRONMENT=development
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Note**: No Redis configuration needed - JSON cache uses the file system!
|
|
73
|
+
|
|
74
|
+
## Running the Example
|
|
75
|
+
|
|
76
|
+
1. **Install Dependencies**:
|
|
77
|
+
```bash
|
|
78
|
+
cd json_cache_example
|
|
79
|
+
uv sync
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
2. **Set Environment Variables**:
|
|
83
|
+
```bash
|
|
84
|
+
# Copy and edit .env file with your WhatsApp credentials
|
|
85
|
+
cp .env.example .env
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
3. **Run the Application**:
|
|
89
|
+
```bash
|
|
90
|
+
uv run python -m app.main
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
4. **Test via WhatsApp**:
|
|
94
|
+
- Send any message to get welcomed
|
|
95
|
+
- Try `/WAPPA` to enter special state
|
|
96
|
+
- Send `/HISTORY` to view message history
|
|
97
|
+
- Send `/STATS` to see JSON cache statistics
|
|
98
|
+
- Send `/EXIT` to leave special state
|
|
99
|
+
|
|
100
|
+
## JSON Cache Behavior
|
|
101
|
+
|
|
102
|
+
### File Structure
|
|
103
|
+
```
|
|
104
|
+
cache_data/
|
|
105
|
+
├── user_cache/
|
|
106
|
+
│ └── user_profile_{phone_number}.json
|
|
107
|
+
├── table_cache/
|
|
108
|
+
│ └── msg_history_{phone_number}.json
|
|
109
|
+
└── state_cache/
|
|
110
|
+
└── wappa_state_{phone_number}.json
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Cache Operations
|
|
114
|
+
- **Set**: Creates/updates JSON files with serialized Pydantic models
|
|
115
|
+
- **Get**: Reads and deserializes JSON files back to Pydantic models
|
|
116
|
+
- **Delete**: Removes JSON files from disk
|
|
117
|
+
- **TTL**: Files older than TTL are automatically cleaned up
|
|
118
|
+
|
|
119
|
+
### Performance Characteristics
|
|
120
|
+
- **Speed**: Fast for small to medium datasets
|
|
121
|
+
- **Persistence**: Data survives restarts and crashes
|
|
122
|
+
- **Scalability**: Good for moderate traffic (hundreds of users)
|
|
123
|
+
- **Reliability**: No external dependencies, always available
|
|
124
|
+
|
|
125
|
+
## Development
|
|
126
|
+
|
|
127
|
+
### Adding New Score Modules
|
|
128
|
+
1. Create new score in `app/scores/`
|
|
129
|
+
2. Inherit from `ScoreBase`
|
|
130
|
+
3. Implement `can_handle()` and `process()` methods
|
|
131
|
+
4. Register in `master_event.py`
|
|
132
|
+
|
|
133
|
+
### Cache Usage Patterns
|
|
134
|
+
```python
|
|
135
|
+
# User cache example
|
|
136
|
+
user = User(phone_number="1234567890", user_name="John")
|
|
137
|
+
await self.user_cache.set("user_profile:1234567890", user, ttl=3600)
|
|
138
|
+
cached_user = await self.user_cache.get("user_profile:1234567890", models=User)
|
|
139
|
+
|
|
140
|
+
# Table cache example
|
|
141
|
+
message_log = MessageLog(user_id="1234567890")
|
|
142
|
+
await self.table_cache.set("msg_history:1234567890", message_log)
|
|
143
|
+
|
|
144
|
+
# State cache example
|
|
145
|
+
state = StateHandler()
|
|
146
|
+
state.activate_wappa()
|
|
147
|
+
await self.state_cache.set("wappa_state:1234567890", state, ttl=1800)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Monitoring
|
|
151
|
+
|
|
152
|
+
### Cache Statistics
|
|
153
|
+
Use `/STATS` command to monitor:
|
|
154
|
+
- File system connectivity
|
|
155
|
+
- Total operations count
|
|
156
|
+
- Cache hit/miss ratios
|
|
157
|
+
- Error rates and health status
|
|
158
|
+
|
|
159
|
+
### Logging
|
|
160
|
+
Comprehensive logging with structured output:
|
|
161
|
+
- User operations (cache hits/misses)
|
|
162
|
+
- Message processing (success/failure)
|
|
163
|
+
- Command handling (state changes)
|
|
164
|
+
- Cache statistics (performance metrics)
|
|
165
|
+
|
|
166
|
+
## Comparison with Redis
|
|
167
|
+
|
|
168
|
+
| Feature | JSON Cache | Redis Cache |
|
|
169
|
+
|---------|------------|-------------|
|
|
170
|
+
| **Setup** | No dependencies | Requires Redis server |
|
|
171
|
+
| **Persistence** | Always persistent | Configurable |
|
|
172
|
+
| **Performance** | Good (file I/O) | Excellent (memory) |
|
|
173
|
+
| **Scalability** | Moderate | High |
|
|
174
|
+
| **Reliability** | High (no external deps) | High (with proper setup) |
|
|
175
|
+
| **Development** | Simple | Requires Redis knowledge |
|
|
176
|
+
|
|
177
|
+
## Use Cases
|
|
178
|
+
|
|
179
|
+
**JSON Cache is ideal for**:
|
|
180
|
+
- Development and testing environments
|
|
181
|
+
- Small to medium WhatsApp bots (< 1000 active users)
|
|
182
|
+
- Applications requiring guaranteed persistence
|
|
183
|
+
- Deployments without external dependencies
|
|
184
|
+
- Scenarios where setup simplicity is important
|
|
185
|
+
|
|
186
|
+
**Consider Redis for**:
|
|
187
|
+
- High-traffic applications (> 1000 concurrent users)
|
|
188
|
+
- Applications requiring sub-millisecond cache responses
|
|
189
|
+
- Distributed deployments
|
|
190
|
+
- Advanced Redis features (pub/sub, streams, etc.)
|
|
File without changes
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Wappa
|
|
2
|
+
logs/
|
|
3
|
+
|
|
4
|
+
# Environment variables
|
|
5
|
+
.env
|
|
6
|
+
.env.local
|
|
7
|
+
.env.development
|
|
8
|
+
.env.production
|
|
9
|
+
|
|
10
|
+
# Python
|
|
11
|
+
__pycache__/
|
|
12
|
+
*.py[cod]
|
|
13
|
+
*$py.class
|
|
14
|
+
*.so
|
|
15
|
+
.Python
|
|
16
|
+
build/
|
|
17
|
+
develop-eggs/
|
|
18
|
+
dist/
|
|
19
|
+
downloads/
|
|
20
|
+
eggs/
|
|
21
|
+
.eggs/
|
|
22
|
+
lib/
|
|
23
|
+
lib64/
|
|
24
|
+
parts/
|
|
25
|
+
sdist/
|
|
26
|
+
var/
|
|
27
|
+
wheels/
|
|
28
|
+
share/python-wheels/
|
|
29
|
+
*.egg-info/
|
|
30
|
+
.installed.cfg
|
|
31
|
+
*.egg
|
|
32
|
+
MANIFEST
|
|
33
|
+
|
|
34
|
+
# Virtual environments
|
|
35
|
+
.venv/
|
|
36
|
+
venv/
|
|
37
|
+
ENV/
|
|
38
|
+
env/
|
|
39
|
+
|
|
40
|
+
# IDE
|
|
41
|
+
.vscode/
|
|
42
|
+
.idea/
|
|
43
|
+
*.swp
|
|
44
|
+
*.swo
|
|
45
|
+
|
|
46
|
+
# OS
|
|
47
|
+
.DS_Store
|
|
48
|
+
Thumbs.db
|
|
49
|
+
|
|
50
|
+
# Logs
|
|
51
|
+
app/logs/
|
|
52
|
+
logs/
|
|
53
|
+
*.log
|
|
54
|
+
|
|
55
|
+
# Redis dumps
|
|
56
|
+
dump.rdb
|
|
57
|
+
|
|
58
|
+
# Temporary files
|
|
59
|
+
.tmp/
|
|
60
|
+
temp/
|
|
61
|
+
tmp/
|
|
62
|
+
|
|
63
|
+
# Coverage reports
|
|
64
|
+
htmlcov/
|
|
65
|
+
.tox/
|
|
66
|
+
.coverage
|
|
67
|
+
.coverage.*
|
|
68
|
+
.cache
|
|
69
|
+
.pytest_cache/
|
|
File without changes
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Wappa
|
|
2
|
+
logs/
|
|
3
|
+
|
|
4
|
+
# Environment variables
|
|
5
|
+
.env
|
|
6
|
+
.env.local
|
|
7
|
+
.env.development
|
|
8
|
+
.env.production
|
|
9
|
+
|
|
10
|
+
# Python
|
|
11
|
+
__pycache__/
|
|
12
|
+
*.py[cod]
|
|
13
|
+
*$py.class
|
|
14
|
+
*.so
|
|
15
|
+
.Python
|
|
16
|
+
build/
|
|
17
|
+
develop-eggs/
|
|
18
|
+
dist/
|
|
19
|
+
downloads/
|
|
20
|
+
eggs/
|
|
21
|
+
.eggs/
|
|
22
|
+
lib/
|
|
23
|
+
lib64/
|
|
24
|
+
parts/
|
|
25
|
+
sdist/
|
|
26
|
+
var/
|
|
27
|
+
wheels/
|
|
28
|
+
share/python-wheels/
|
|
29
|
+
*.egg-info/
|
|
30
|
+
.installed.cfg
|
|
31
|
+
*.egg
|
|
32
|
+
MANIFEST
|
|
33
|
+
|
|
34
|
+
# Virtual environments
|
|
35
|
+
.venv/
|
|
36
|
+
venv/
|
|
37
|
+
ENV/
|
|
38
|
+
env/
|
|
39
|
+
|
|
40
|
+
# IDE
|
|
41
|
+
.vscode/
|
|
42
|
+
.idea/
|
|
43
|
+
*.swp
|
|
44
|
+
*.swo
|
|
45
|
+
|
|
46
|
+
# OS
|
|
47
|
+
.DS_Store
|
|
48
|
+
Thumbs.db
|
|
49
|
+
|
|
50
|
+
# Logs
|
|
51
|
+
app/logs/
|
|
52
|
+
logs/
|
|
53
|
+
*.log
|
|
54
|
+
|
|
55
|
+
# Redis dumps
|
|
56
|
+
dump.rdb
|
|
57
|
+
|
|
58
|
+
# Temporary files
|
|
59
|
+
.tmp/
|
|
60
|
+
temp/
|
|
61
|
+
tmp/
|
|
62
|
+
|
|
63
|
+
# Coverage reports
|
|
64
|
+
htmlcov/
|
|
65
|
+
.tox/
|
|
66
|
+
.coverage
|
|
67
|
+
.coverage.*
|
|
68
|
+
.cache
|
|
69
|
+
.pytest_cache/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
Binary file
|