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.
Files changed (138) hide show
  1. fastsmtp-0.6.0/.gitignore +81 -0
  2. fastsmtp-0.6.0/LICENSE +661 -0
  3. fastsmtp-0.6.0/PKG-INFO +101 -0
  4. fastsmtp-0.6.0/README.md +50 -0
  5. fastsmtp-0.6.0/docs/plans/2026-01-08-s3-attachment-storage-design.md +310 -0
  6. fastsmtp-0.6.0/docs/plans/2026-01-08-s3-attachment-storage-implementation.md +1073 -0
  7. fastsmtp-0.6.0/pyproject.toml +75 -0
  8. fastsmtp-0.6.0/src/fastsmtp/__init__.py +3 -0
  9. fastsmtp-0.6.0/src/fastsmtp/alembic/env.py +69 -0
  10. fastsmtp-0.6.0/src/fastsmtp/alembic/script.py.mako +26 -0
  11. fastsmtp-0.6.0/src/fastsmtp/alembic/versions/.gitkeep +0 -0
  12. fastsmtp-0.6.0/src/fastsmtp/alembic/versions/001_initial_schema.py +271 -0
  13. fastsmtp-0.6.0/src/fastsmtp/alembic/versions/002_add_delivery_log_indexes.py +30 -0
  14. fastsmtp-0.6.0/src/fastsmtp/alembic/versions/003_add_soft_delete_columns.py +66 -0
  15. fastsmtp-0.6.0/src/fastsmtp/alembic/versions/004_add_raw_message_preservation.py +45 -0
  16. fastsmtp-0.6.0/src/fastsmtp/alembic/versions/005_align_schema_with_models.py +90 -0
  17. fastsmtp-0.6.0/src/fastsmtp/alembic/versions/006_exclude_soft_deleted_from_catchall.py +56 -0
  18. fastsmtp-0.6.0/src/fastsmtp/alembic/versions/007_exclude_soft_deleted_from_local_part.py +59 -0
  19. fastsmtp-0.6.0/src/fastsmtp/alembic/versions/008_exclude_soft_deleted_from_name_uniqueness.py +63 -0
  20. fastsmtp-0.6.0/src/fastsmtp/api/__init__.py +5 -0
  21. fastsmtp-0.6.0/src/fastsmtp/api/auth.py +223 -0
  22. fastsmtp-0.6.0/src/fastsmtp/api/domains.py +384 -0
  23. fastsmtp-0.6.0/src/fastsmtp/api/operations.py +366 -0
  24. fastsmtp-0.6.0/src/fastsmtp/api/recipients.py +296 -0
  25. fastsmtp-0.6.0/src/fastsmtp/api/router.py +15 -0
  26. fastsmtp-0.6.0/src/fastsmtp/api/rules.py +459 -0
  27. fastsmtp-0.6.0/src/fastsmtp/api/users.py +195 -0
  28. fastsmtp-0.6.0/src/fastsmtp/api/validation.py +153 -0
  29. fastsmtp-0.6.0/src/fastsmtp/auth/__init__.py +28 -0
  30. fastsmtp-0.6.0/src/fastsmtp/auth/dependencies.py +361 -0
  31. fastsmtp-0.6.0/src/fastsmtp/auth/keys.py +109 -0
  32. fastsmtp-0.6.0/src/fastsmtp/cleanup/__init__.py +14 -0
  33. fastsmtp-0.6.0/src/fastsmtp/cleanup/purge.py +127 -0
  34. fastsmtp-0.6.0/src/fastsmtp/cleanup/service.py +125 -0
  35. fastsmtp-0.6.0/src/fastsmtp/cleanup/worker.py +158 -0
  36. fastsmtp-0.6.0/src/fastsmtp/cli.py +1332 -0
  37. fastsmtp-0.6.0/src/fastsmtp/config.py +416 -0
  38. fastsmtp-0.6.0/src/fastsmtp/crypto.py +295 -0
  39. fastsmtp-0.6.0/src/fastsmtp/db/__init__.py +34 -0
  40. fastsmtp-0.6.0/src/fastsmtp/db/bulk.py +37 -0
  41. fastsmtp-0.6.0/src/fastsmtp/db/encrypted_types.py +83 -0
  42. fastsmtp-0.6.0/src/fastsmtp/db/encryption_guard.py +234 -0
  43. fastsmtp-0.6.0/src/fastsmtp/db/enums.py +57 -0
  44. fastsmtp-0.6.0/src/fastsmtp/db/integrity.py +72 -0
  45. fastsmtp-0.6.0/src/fastsmtp/db/migrations.py +124 -0
  46. fastsmtp-0.6.0/src/fastsmtp/db/models.py +436 -0
  47. fastsmtp-0.6.0/src/fastsmtp/db/session.py +101 -0
  48. fastsmtp-0.6.0/src/fastsmtp/db/soft_delete.py +166 -0
  49. fastsmtp-0.6.0/src/fastsmtp/db/startup.py +45 -0
  50. fastsmtp-0.6.0/src/fastsmtp/encryption.py +39 -0
  51. fastsmtp-0.6.0/src/fastsmtp/main.py +108 -0
  52. fastsmtp-0.6.0/src/fastsmtp/metrics/__init__.py +25 -0
  53. fastsmtp-0.6.0/src/fastsmtp/metrics/access.py +181 -0
  54. fastsmtp-0.6.0/src/fastsmtp/metrics/definitions.py +70 -0
  55. fastsmtp-0.6.0/src/fastsmtp/metrics/middleware.py +76 -0
  56. fastsmtp-0.6.0/src/fastsmtp/middleware/__init__.py +12 -0
  57. fastsmtp-0.6.0/src/fastsmtp/middleware/db_session.py +66 -0
  58. fastsmtp-0.6.0/src/fastsmtp/middleware/logging.py +63 -0
  59. fastsmtp-0.6.0/src/fastsmtp/middleware/rate_limit.py +160 -0
  60. fastsmtp-0.6.0/src/fastsmtp/net.py +64 -0
  61. fastsmtp-0.6.0/src/fastsmtp/rules/__init__.py +37 -0
  62. fastsmtp-0.6.0/src/fastsmtp/rules/conditions.py +160 -0
  63. fastsmtp-0.6.0/src/fastsmtp/rules/engine.py +248 -0
  64. fastsmtp-0.6.0/src/fastsmtp/schemas/__init__.py +103 -0
  65. fastsmtp-0.6.0/src/fastsmtp/schemas/common.py +40 -0
  66. fastsmtp-0.6.0/src/fastsmtp/schemas/domain.py +99 -0
  67. fastsmtp-0.6.0/src/fastsmtp/schemas/recipient.py +57 -0
  68. fastsmtp-0.6.0/src/fastsmtp/schemas/rule.py +239 -0
  69. fastsmtp-0.6.0/src/fastsmtp/schemas/user.py +91 -0
  70. fastsmtp-0.6.0/src/fastsmtp/schemas/webhook.py +66 -0
  71. fastsmtp-0.6.0/src/fastsmtp/smtp/__init__.py +47 -0
  72. fastsmtp-0.6.0/src/fastsmtp/smtp/rate_limiter.py +184 -0
  73. fastsmtp-0.6.0/src/fastsmtp/smtp/server.py +1032 -0
  74. fastsmtp-0.6.0/src/fastsmtp/smtp/tls.py +224 -0
  75. fastsmtp-0.6.0/src/fastsmtp/smtp/validation.py +344 -0
  76. fastsmtp-0.6.0/src/fastsmtp/storage/__init__.py +10 -0
  77. fastsmtp-0.6.0/src/fastsmtp/storage/raw_message.py +112 -0
  78. fastsmtp-0.6.0/src/fastsmtp/storage/s3.py +255 -0
  79. fastsmtp-0.6.0/src/fastsmtp/webhook/__init__.py +39 -0
  80. fastsmtp-0.6.0/src/fastsmtp/webhook/dispatcher.py +356 -0
  81. fastsmtp-0.6.0/src/fastsmtp/webhook/queue.py +560 -0
  82. fastsmtp-0.6.0/src/fastsmtp/webhook/url_validator.py +311 -0
  83. fastsmtp-0.6.0/tests/cli_harness.py +45 -0
  84. fastsmtp-0.6.0/tests/conftest.py +559 -0
  85. fastsmtp-0.6.0/tests/test_api_auth_extended.py +555 -0
  86. fastsmtp-0.6.0/tests/test_api_domains.py +286 -0
  87. fastsmtp-0.6.0/tests/test_api_domains_extended.py +1079 -0
  88. fastsmtp-0.6.0/tests/test_api_health.py +25 -0
  89. fastsmtp-0.6.0/tests/test_api_operations_extended.py +980 -0
  90. fastsmtp-0.6.0/tests/test_api_raw_preservation.py +263 -0
  91. fastsmtp-0.6.0/tests/test_api_read_after_write.py +206 -0
  92. fastsmtp-0.6.0/tests/test_api_recipients.py +250 -0
  93. fastsmtp-0.6.0/tests/test_api_recipients_extended.py +925 -0
  94. fastsmtp-0.6.0/tests/test_api_rules.py +690 -0
  95. fastsmtp-0.6.0/tests/test_api_rules_extended.py +392 -0
  96. fastsmtp-0.6.0/tests/test_api_unit.py +1911 -0
  97. fastsmtp-0.6.0/tests/test_api_users.py +291 -0
  98. fastsmtp-0.6.0/tests/test_api_users_extended.py +635 -0
  99. fastsmtp-0.6.0/tests/test_api_validation.py +217 -0
  100. fastsmtp-0.6.0/tests/test_ascii_only.py +78 -0
  101. fastsmtp-0.6.0/tests/test_auth_error_paths.py +617 -0
  102. fastsmtp-0.6.0/tests/test_auth_keys.py +123 -0
  103. fastsmtp-0.6.0/tests/test_cleanup.py +1048 -0
  104. fastsmtp-0.6.0/tests/test_cli_admin.py +945 -0
  105. fastsmtp-0.6.0/tests/test_cli_client_integration.py +316 -0
  106. fastsmtp-0.6.0/tests/test_cli_db.py +323 -0
  107. fastsmtp-0.6.0/tests/test_cli_domain_update.py +275 -0
  108. fastsmtp-0.6.0/tests/test_cli_encrypt.py +311 -0
  109. fastsmtp-0.6.0/tests/test_cli_serve_guards.py +200 -0
  110. fastsmtp-0.6.0/tests/test_config.py +295 -0
  111. fastsmtp-0.6.0/tests/test_crypto.py +309 -0
  112. fastsmtp-0.6.0/tests/test_db_migrations_helpers.py +114 -0
  113. fastsmtp-0.6.0/tests/test_delivery_cancellation.py +470 -0
  114. fastsmtp-0.6.0/tests/test_e2e_smtp_flow.py +801 -0
  115. fastsmtp-0.6.0/tests/test_encrypted_payload.py +615 -0
  116. fastsmtp-0.6.0/tests/test_encrypted_types.py +438 -0
  117. fastsmtp-0.6.0/tests/test_encryption_guard.py +519 -0
  118. fastsmtp-0.6.0/tests/test_metrics_access.py +511 -0
  119. fastsmtp-0.6.0/tests/test_migrations.py +264 -0
  120. fastsmtp-0.6.0/tests/test_net.py +106 -0
  121. fastsmtp-0.6.0/tests/test_no_hardcoded_ports.py +42 -0
  122. fastsmtp-0.6.0/tests/test_packaging.py +198 -0
  123. fastsmtp-0.6.0/tests/test_rate_limiting.py +371 -0
  124. fastsmtp-0.6.0/tests/test_raw_message_preservation.py +407 -0
  125. fastsmtp-0.6.0/tests/test_rules_engine.py +784 -0
  126. fastsmtp-0.6.0/tests/test_secret_disclosure.py +273 -0
  127. fastsmtp-0.6.0/tests/test_settings_cache.py +98 -0
  128. fastsmtp-0.6.0/tests/test_smtp_integration.py +690 -0
  129. fastsmtp-0.6.0/tests/test_smtp_s3_integration.py +459 -0
  130. fastsmtp-0.6.0/tests/test_smtp_server.py +1204 -0
  131. fastsmtp-0.6.0/tests/test_smtp_server_extended.py +310 -0
  132. fastsmtp-0.6.0/tests/test_smtp_tls.py +801 -0
  133. fastsmtp-0.6.0/tests/test_smtp_validation.py +579 -0
  134. fastsmtp-0.6.0/tests/test_soft_delete_service.py +593 -0
  135. fastsmtp-0.6.0/tests/test_soft_deletes.py +507 -0
  136. fastsmtp-0.6.0/tests/test_storage_s3.py +437 -0
  137. fastsmtp-0.6.0/tests/test_url_validator.py +356 -0
  138. 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/