fastsmtp 0.6.0__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.
- fastsmtp-0.6.0/.gitignore +81 -0
- fastsmtp-0.6.0/LICENSE +661 -0
- fastsmtp-0.6.0/PKG-INFO +101 -0
- fastsmtp-0.6.0/README.md +50 -0
- fastsmtp-0.6.0/docs/plans/2026-01-08-s3-attachment-storage-design.md +310 -0
- fastsmtp-0.6.0/docs/plans/2026-01-08-s3-attachment-storage-implementation.md +1073 -0
- fastsmtp-0.6.0/pyproject.toml +75 -0
- fastsmtp-0.6.0/src/fastsmtp/__init__.py +3 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/env.py +69 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/script.py.mako +26 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/versions/.gitkeep +0 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/versions/001_initial_schema.py +271 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/versions/002_add_delivery_log_indexes.py +30 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/versions/003_add_soft_delete_columns.py +66 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/versions/004_add_raw_message_preservation.py +45 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/versions/005_align_schema_with_models.py +90 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/versions/006_exclude_soft_deleted_from_catchall.py +56 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/versions/007_exclude_soft_deleted_from_local_part.py +59 -0
- fastsmtp-0.6.0/src/fastsmtp/alembic/versions/008_exclude_soft_deleted_from_name_uniqueness.py +63 -0
- fastsmtp-0.6.0/src/fastsmtp/api/__init__.py +5 -0
- fastsmtp-0.6.0/src/fastsmtp/api/auth.py +223 -0
- fastsmtp-0.6.0/src/fastsmtp/api/domains.py +384 -0
- fastsmtp-0.6.0/src/fastsmtp/api/operations.py +366 -0
- fastsmtp-0.6.0/src/fastsmtp/api/recipients.py +296 -0
- fastsmtp-0.6.0/src/fastsmtp/api/router.py +15 -0
- fastsmtp-0.6.0/src/fastsmtp/api/rules.py +459 -0
- fastsmtp-0.6.0/src/fastsmtp/api/users.py +195 -0
- fastsmtp-0.6.0/src/fastsmtp/api/validation.py +153 -0
- fastsmtp-0.6.0/src/fastsmtp/auth/__init__.py +28 -0
- fastsmtp-0.6.0/src/fastsmtp/auth/dependencies.py +361 -0
- fastsmtp-0.6.0/src/fastsmtp/auth/keys.py +109 -0
- fastsmtp-0.6.0/src/fastsmtp/cleanup/__init__.py +14 -0
- fastsmtp-0.6.0/src/fastsmtp/cleanup/purge.py +127 -0
- fastsmtp-0.6.0/src/fastsmtp/cleanup/service.py +125 -0
- fastsmtp-0.6.0/src/fastsmtp/cleanup/worker.py +158 -0
- fastsmtp-0.6.0/src/fastsmtp/cli.py +1332 -0
- fastsmtp-0.6.0/src/fastsmtp/config.py +416 -0
- fastsmtp-0.6.0/src/fastsmtp/crypto.py +295 -0
- fastsmtp-0.6.0/src/fastsmtp/db/__init__.py +34 -0
- fastsmtp-0.6.0/src/fastsmtp/db/bulk.py +37 -0
- fastsmtp-0.6.0/src/fastsmtp/db/encrypted_types.py +83 -0
- fastsmtp-0.6.0/src/fastsmtp/db/encryption_guard.py +234 -0
- fastsmtp-0.6.0/src/fastsmtp/db/enums.py +57 -0
- fastsmtp-0.6.0/src/fastsmtp/db/integrity.py +72 -0
- fastsmtp-0.6.0/src/fastsmtp/db/migrations.py +124 -0
- fastsmtp-0.6.0/src/fastsmtp/db/models.py +436 -0
- fastsmtp-0.6.0/src/fastsmtp/db/session.py +101 -0
- fastsmtp-0.6.0/src/fastsmtp/db/soft_delete.py +166 -0
- fastsmtp-0.6.0/src/fastsmtp/db/startup.py +45 -0
- fastsmtp-0.6.0/src/fastsmtp/encryption.py +39 -0
- fastsmtp-0.6.0/src/fastsmtp/main.py +108 -0
- fastsmtp-0.6.0/src/fastsmtp/metrics/__init__.py +25 -0
- fastsmtp-0.6.0/src/fastsmtp/metrics/access.py +181 -0
- fastsmtp-0.6.0/src/fastsmtp/metrics/definitions.py +70 -0
- fastsmtp-0.6.0/src/fastsmtp/metrics/middleware.py +76 -0
- fastsmtp-0.6.0/src/fastsmtp/middleware/__init__.py +12 -0
- fastsmtp-0.6.0/src/fastsmtp/middleware/db_session.py +66 -0
- fastsmtp-0.6.0/src/fastsmtp/middleware/logging.py +63 -0
- fastsmtp-0.6.0/src/fastsmtp/middleware/rate_limit.py +160 -0
- fastsmtp-0.6.0/src/fastsmtp/net.py +64 -0
- fastsmtp-0.6.0/src/fastsmtp/rules/__init__.py +37 -0
- fastsmtp-0.6.0/src/fastsmtp/rules/conditions.py +160 -0
- fastsmtp-0.6.0/src/fastsmtp/rules/engine.py +248 -0
- fastsmtp-0.6.0/src/fastsmtp/schemas/__init__.py +103 -0
- fastsmtp-0.6.0/src/fastsmtp/schemas/common.py +40 -0
- fastsmtp-0.6.0/src/fastsmtp/schemas/domain.py +99 -0
- fastsmtp-0.6.0/src/fastsmtp/schemas/recipient.py +57 -0
- fastsmtp-0.6.0/src/fastsmtp/schemas/rule.py +239 -0
- fastsmtp-0.6.0/src/fastsmtp/schemas/user.py +91 -0
- fastsmtp-0.6.0/src/fastsmtp/schemas/webhook.py +66 -0
- fastsmtp-0.6.0/src/fastsmtp/smtp/__init__.py +47 -0
- fastsmtp-0.6.0/src/fastsmtp/smtp/rate_limiter.py +184 -0
- fastsmtp-0.6.0/src/fastsmtp/smtp/server.py +1032 -0
- fastsmtp-0.6.0/src/fastsmtp/smtp/tls.py +224 -0
- fastsmtp-0.6.0/src/fastsmtp/smtp/validation.py +344 -0
- fastsmtp-0.6.0/src/fastsmtp/storage/__init__.py +10 -0
- fastsmtp-0.6.0/src/fastsmtp/storage/raw_message.py +112 -0
- fastsmtp-0.6.0/src/fastsmtp/storage/s3.py +255 -0
- fastsmtp-0.6.0/src/fastsmtp/webhook/__init__.py +39 -0
- fastsmtp-0.6.0/src/fastsmtp/webhook/dispatcher.py +356 -0
- fastsmtp-0.6.0/src/fastsmtp/webhook/queue.py +560 -0
- fastsmtp-0.6.0/src/fastsmtp/webhook/url_validator.py +311 -0
- fastsmtp-0.6.0/tests/cli_harness.py +45 -0
- fastsmtp-0.6.0/tests/conftest.py +559 -0
- fastsmtp-0.6.0/tests/test_api_auth_extended.py +555 -0
- fastsmtp-0.6.0/tests/test_api_domains.py +286 -0
- fastsmtp-0.6.0/tests/test_api_domains_extended.py +1079 -0
- fastsmtp-0.6.0/tests/test_api_health.py +25 -0
- fastsmtp-0.6.0/tests/test_api_operations_extended.py +980 -0
- fastsmtp-0.6.0/tests/test_api_raw_preservation.py +263 -0
- fastsmtp-0.6.0/tests/test_api_read_after_write.py +206 -0
- fastsmtp-0.6.0/tests/test_api_recipients.py +250 -0
- fastsmtp-0.6.0/tests/test_api_recipients_extended.py +925 -0
- fastsmtp-0.6.0/tests/test_api_rules.py +690 -0
- fastsmtp-0.6.0/tests/test_api_rules_extended.py +392 -0
- fastsmtp-0.6.0/tests/test_api_unit.py +1911 -0
- fastsmtp-0.6.0/tests/test_api_users.py +291 -0
- fastsmtp-0.6.0/tests/test_api_users_extended.py +635 -0
- fastsmtp-0.6.0/tests/test_api_validation.py +217 -0
- fastsmtp-0.6.0/tests/test_ascii_only.py +78 -0
- fastsmtp-0.6.0/tests/test_auth_error_paths.py +617 -0
- fastsmtp-0.6.0/tests/test_auth_keys.py +123 -0
- fastsmtp-0.6.0/tests/test_cleanup.py +1048 -0
- fastsmtp-0.6.0/tests/test_cli_admin.py +945 -0
- fastsmtp-0.6.0/tests/test_cli_client_integration.py +316 -0
- fastsmtp-0.6.0/tests/test_cli_db.py +323 -0
- fastsmtp-0.6.0/tests/test_cli_domain_update.py +275 -0
- fastsmtp-0.6.0/tests/test_cli_encrypt.py +311 -0
- fastsmtp-0.6.0/tests/test_cli_serve_guards.py +200 -0
- fastsmtp-0.6.0/tests/test_config.py +295 -0
- fastsmtp-0.6.0/tests/test_crypto.py +309 -0
- fastsmtp-0.6.0/tests/test_db_migrations_helpers.py +114 -0
- fastsmtp-0.6.0/tests/test_delivery_cancellation.py +470 -0
- fastsmtp-0.6.0/tests/test_e2e_smtp_flow.py +801 -0
- fastsmtp-0.6.0/tests/test_encrypted_payload.py +615 -0
- fastsmtp-0.6.0/tests/test_encrypted_types.py +438 -0
- fastsmtp-0.6.0/tests/test_encryption_guard.py +519 -0
- fastsmtp-0.6.0/tests/test_metrics_access.py +511 -0
- fastsmtp-0.6.0/tests/test_migrations.py +264 -0
- fastsmtp-0.6.0/tests/test_net.py +106 -0
- fastsmtp-0.6.0/tests/test_no_hardcoded_ports.py +42 -0
- fastsmtp-0.6.0/tests/test_packaging.py +198 -0
- fastsmtp-0.6.0/tests/test_rate_limiting.py +371 -0
- fastsmtp-0.6.0/tests/test_raw_message_preservation.py +407 -0
- fastsmtp-0.6.0/tests/test_rules_engine.py +784 -0
- fastsmtp-0.6.0/tests/test_secret_disclosure.py +273 -0
- fastsmtp-0.6.0/tests/test_settings_cache.py +98 -0
- fastsmtp-0.6.0/tests/test_smtp_integration.py +690 -0
- fastsmtp-0.6.0/tests/test_smtp_s3_integration.py +459 -0
- fastsmtp-0.6.0/tests/test_smtp_server.py +1204 -0
- fastsmtp-0.6.0/tests/test_smtp_server_extended.py +310 -0
- fastsmtp-0.6.0/tests/test_smtp_tls.py +801 -0
- fastsmtp-0.6.0/tests/test_smtp_validation.py +579 -0
- fastsmtp-0.6.0/tests/test_soft_delete_service.py +593 -0
- fastsmtp-0.6.0/tests/test_soft_deletes.py +507 -0
- fastsmtp-0.6.0/tests/test_storage_s3.py +437 -0
- fastsmtp-0.6.0/tests/test_url_validator.py +356 -0
- fastsmtp-0.6.0/tests/test_webhook.py +1914 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg-info/
|
|
24
|
+
.installed.cfg
|
|
25
|
+
*.egg
|
|
26
|
+
|
|
27
|
+
# Virtual environments
|
|
28
|
+
.env
|
|
29
|
+
.venv
|
|
30
|
+
env/
|
|
31
|
+
venv/
|
|
32
|
+
ENV/
|
|
33
|
+
env.bak/
|
|
34
|
+
venv.bak/
|
|
35
|
+
|
|
36
|
+
# Environment variables
|
|
37
|
+
.env.local
|
|
38
|
+
.env.*.local
|
|
39
|
+
|
|
40
|
+
# FastAPI / Uvicorn
|
|
41
|
+
*.log
|
|
42
|
+
|
|
43
|
+
# Testing
|
|
44
|
+
.pytest_cache/
|
|
45
|
+
.coverage
|
|
46
|
+
coverage.xml
|
|
47
|
+
htmlcov/
|
|
48
|
+
.tox/
|
|
49
|
+
.hypothesis/
|
|
50
|
+
|
|
51
|
+
# IDE
|
|
52
|
+
.vscode/
|
|
53
|
+
.idea/
|
|
54
|
+
*.swp
|
|
55
|
+
*.swo
|
|
56
|
+
*~
|
|
57
|
+
|
|
58
|
+
# OS
|
|
59
|
+
.DS_Store
|
|
60
|
+
Thumbs.db
|
|
61
|
+
|
|
62
|
+
# Project specific
|
|
63
|
+
CLAUDE.md
|
|
64
|
+
|
|
65
|
+
# Database
|
|
66
|
+
*.db
|
|
67
|
+
*.sqlite
|
|
68
|
+
*.sqlite3
|
|
69
|
+
|
|
70
|
+
# mypy
|
|
71
|
+
.mypy_cache/
|
|
72
|
+
.dmypy.json
|
|
73
|
+
dmypy.json
|
|
74
|
+
|
|
75
|
+
# Pyre type checker
|
|
76
|
+
.pyre/
|
|
77
|
+
.worktrees/
|
|
78
|
+
|
|
79
|
+
# Zensical documentation build
|
|
80
|
+
site/
|
|
81
|
+
.zensical/
|