@vicoa/cli 1.3.11-linux-x64 → 1.3.11

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 (301) hide show
  1. package/README.md +82 -0
  2. package/bin/vicoa.js +38 -0
  3. package/package.json +29 -10
  4. package/bin/_internal/81d243bd2c585b0f4821__mypyc.cpython-312-x86_64-linux-gnu.so +0 -0
  5. package/bin/_internal/_cffi_backend.cpython-312-x86_64-linux-gnu.so +0 -0
  6. package/bin/_internal/aiofile-3.9.0.dist-info/INSTALLER +0 -1
  7. package/bin/_internal/aiofile-3.9.0.dist-info/LICENCE +0 -195
  8. package/bin/_internal/aiofile-3.9.0.dist-info/LICENCE.md +0 -195
  9. package/bin/_internal/aiofile-3.9.0.dist-info/METADATA +0 -492
  10. package/bin/_internal/aiofile-3.9.0.dist-info/RECORD +0 -15
  11. package/bin/_internal/aiofile-3.9.0.dist-info/WHEEL +0 -4
  12. package/bin/_internal/aiohttp/_http_parser.cpython-312-x86_64-linux-gnu.so +0 -0
  13. package/bin/_internal/aiohttp/_http_writer.cpython-312-x86_64-linux-gnu.so +0 -0
  14. package/bin/_internal/aiohttp/_websocket/mask.cpython-312-x86_64-linux-gnu.so +0 -0
  15. package/bin/_internal/aiohttp/_websocket/reader_c.cpython-312-x86_64-linux-gnu.so +0 -0
  16. package/bin/_internal/attrs-26.1.0.dist-info/INSTALLER +0 -1
  17. package/bin/_internal/attrs-26.1.0.dist-info/METADATA +0 -199
  18. package/bin/_internal/attrs-26.1.0.dist-info/RECORD +0 -55
  19. package/bin/_internal/attrs-26.1.0.dist-info/WHEEL +0 -4
  20. package/bin/_internal/attrs-26.1.0.dist-info/licenses/LICENSE +0 -21
  21. package/bin/_internal/base_library.zip +0 -0
  22. package/bin/_internal/caio/linux_aio.cpython-312-x86_64-linux-gnu.so +0 -0
  23. package/bin/_internal/caio/thread_aio.cpython-312-x86_64-linux-gnu.so +0 -0
  24. package/bin/_internal/certifi/cacert.pem +0 -4494
  25. package/bin/_internal/certifi/py.typed +0 -0
  26. package/bin/_internal/charset_normalizer/cd.cpython-312-x86_64-linux-gnu.so +0 -0
  27. package/bin/_internal/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so +0 -0
  28. package/bin/_internal/click-8.3.2.dist-info/INSTALLER +0 -1
  29. package/bin/_internal/click-8.3.2.dist-info/METADATA +0 -84
  30. package/bin/_internal/click-8.3.2.dist-info/RECORD +0 -40
  31. package/bin/_internal/click-8.3.2.dist-info/WHEEL +0 -4
  32. package/bin/_internal/click-8.3.2.dist-info/licenses/LICENSE.txt +0 -28
  33. package/bin/_internal/cryptography/hazmat/bindings/_rust.abi3.so +0 -0
  34. package/bin/_internal/cryptography-46.0.7.dist-info/INSTALLER +0 -1
  35. package/bin/_internal/cryptography-46.0.7.dist-info/METADATA +0 -139
  36. package/bin/_internal/cryptography-46.0.7.dist-info/RECORD +0 -180
  37. package/bin/_internal/cryptography-46.0.7.dist-info/WHEEL +0 -5
  38. package/bin/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE +0 -3
  39. package/bin/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.APACHE +0 -202
  40. package/bin/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.BSD +0 -27
  41. package/bin/_internal/email_validator-2.3.0.dist-info/INSTALLER +0 -1
  42. package/bin/_internal/email_validator-2.3.0.dist-info/METADATA +0 -466
  43. package/bin/_internal/email_validator-2.3.0.dist-info/RECORD +0 -27
  44. package/bin/_internal/email_validator-2.3.0.dist-info/WHEEL +0 -5
  45. package/bin/_internal/email_validator-2.3.0.dist-info/entry_points.txt +0 -2
  46. package/bin/_internal/email_validator-2.3.0.dist-info/licenses/LICENSE +0 -27
  47. package/bin/_internal/email_validator-2.3.0.dist-info/top_level.txt +0 -1
  48. package/bin/_internal/frozenlist/_frozenlist.cpython-312-x86_64-linux-gnu.so +0 -0
  49. package/bin/_internal/importlib_metadata-8.7.1.dist-info/INSTALLER +0 -1
  50. package/bin/_internal/importlib_metadata-8.7.1.dist-info/METADATA +0 -133
  51. package/bin/_internal/importlib_metadata-8.7.1.dist-info/RECORD +0 -33
  52. package/bin/_internal/importlib_metadata-8.7.1.dist-info/WHEEL +0 -5
  53. package/bin/_internal/importlib_metadata-8.7.1.dist-info/licenses/LICENSE +0 -73
  54. package/bin/_internal/importlib_metadata-8.7.1.dist-info/top_level.txt +0 -1
  55. package/bin/_internal/integrations/cli_wrappers/IMPORTANT_USE_CASES.md +0 -33
  56. package/bin/_internal/integrations/github/claude-code-action/CLAUDE.md +0 -136
  57. package/bin/_internal/integrations/github/claude-code-action/CODE_OF_CONDUCT.md +0 -128
  58. package/bin/_internal/integrations/github/claude-code-action/CONTRIBUTING.md +0 -116
  59. package/bin/_internal/integrations/github/claude-code-action/LICENSE +0 -21
  60. package/bin/_internal/integrations/github/claude-code-action/README.md +0 -53
  61. package/bin/_internal/integrations/github/claude-code-action/ROADMAP.md +0 -20
  62. package/bin/_internal/integrations/github/claude-code-action/SECURITY.md +0 -15
  63. package/bin/_internal/integrations/github/claude-code-action/action.yml +0 -294
  64. package/bin/_internal/integrations/github/claude-code-action/base-action/CLAUDE.md +0 -60
  65. package/bin/_internal/integrations/github/claude-code-action/base-action/CODE_OF_CONDUCT.md +0 -128
  66. package/bin/_internal/integrations/github/claude-code-action/base-action/CONTRIBUTING.md +0 -136
  67. package/bin/_internal/integrations/github/claude-code-action/base-action/LICENSE +0 -21
  68. package/bin/_internal/integrations/github/claude-code-action/base-action/MIRROR_DISCLAIMER.md +0 -11
  69. package/bin/_internal/integrations/github/claude-code-action/base-action/README.md +0 -521
  70. package/bin/_internal/integrations/github/claude-code-action/base-action/action.yml +0 -149
  71. package/bin/_internal/integrations/github/claude-code-action/base-action/bun.lock +0 -54
  72. package/bin/_internal/integrations/github/claude-code-action/base-action/examples/issue-triage.yml +0 -108
  73. package/bin/_internal/integrations/github/claude-code-action/base-action/package.json +0 -23
  74. package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/install-hooks.sh +0 -13
  75. package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/pre-push +0 -46
  76. package/bin/_internal/integrations/github/claude-code-action/base-action/src/index.ts +0 -82
  77. package/bin/_internal/integrations/github/claude-code-action/base-action/src/prepare-prompt.ts +0 -82
  78. package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-claude.ts +0 -257
  79. package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-vicoa.ts +0 -301
  80. package/bin/_internal/integrations/github/claude-code-action/base-action/src/setup-claude-code-settings.ts +0 -68
  81. package/bin/_internal/integrations/github/claude-code-action/base-action/src/validate-env.ts +0 -54
  82. package/bin/_internal/integrations/github/claude-code-action/base-action/test-local.sh +0 -12
  83. package/bin/_internal/integrations/github/claude-code-action/base-action/test-mcp-local.sh +0 -18
  84. package/bin/_internal/integrations/github/claude-code-action/base-action/tsconfig.json +0 -30
  85. package/bin/_internal/integrations/github/claude-code-action/bun.lock +0 -384
  86. package/bin/_internal/integrations/github/claude-code-action/docs/capabilities-and-limitations.md +0 -33
  87. package/bin/_internal/integrations/github/claude-code-action/docs/cloud-providers.md +0 -99
  88. package/bin/_internal/integrations/github/claude-code-action/docs/configuration.md +0 -345
  89. package/bin/_internal/integrations/github/claude-code-action/docs/custom-automations.md +0 -113
  90. package/bin/_internal/integrations/github/claude-code-action/docs/experimental.md +0 -128
  91. package/bin/_internal/integrations/github/claude-code-action/docs/faq.md +0 -205
  92. package/bin/_internal/integrations/github/claude-code-action/docs/migration-guide.md +0 -261
  93. package/bin/_internal/integrations/github/claude-code-action/docs/security.md +0 -38
  94. package/bin/_internal/integrations/github/claude-code-action/docs/setup.md +0 -146
  95. package/bin/_internal/integrations/github/claude-code-action/docs/usage.md +0 -213
  96. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/auto-fix-ci.yml +0 -97
  97. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/commands/fix-ci.md +0 -127
  98. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/auto-fix-ci-signed.yml +0 -97
  99. package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/commands/fix-ci-signed.md +0 -148
  100. package/bin/_internal/integrations/github/claude-code-action/examples/issue-deduplication.yml +0 -63
  101. package/bin/_internal/integrations/github/claude-code-action/examples/issue-triage.yml +0 -75
  102. package/bin/_internal/integrations/github/claude-code-action/examples/vicoa.yml +0 -75
  103. package/bin/_internal/integrations/github/claude-code-action/package.json +0 -31
  104. package/bin/_internal/integrations/github/claude-code-action/scripts/install-hooks.sh +0 -13
  105. package/bin/_internal/integrations/github/claude-code-action/scripts/pre-commit +0 -46
  106. package/bin/_internal/integrations/github/claude-code-action/scripts/setup-network-restrictions.sh +0 -123
  107. package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/index.ts +0 -799
  108. package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/types.ts +0 -102
  109. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/collect-inputs.ts +0 -58
  110. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/format-turns.ts +0 -465
  111. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/prepare.ts +0 -98
  112. package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/update-comment-link.ts +0 -245
  113. package/bin/_internal/integrations/github/claude-code-action/src/github/api/client.ts +0 -23
  114. package/bin/_internal/integrations/github/claude-code-action/src/github/api/config.ts +0 -4
  115. package/bin/_internal/integrations/github/claude-code-action/src/github/api/queries/github.ts +0 -117
  116. package/bin/_internal/integrations/github/claude-code-action/src/github/context.ts +0 -277
  117. package/bin/_internal/integrations/github/claude-code-action/src/github/data/fetcher.ts +0 -233
  118. package/bin/_internal/integrations/github/claude-code-action/src/github/data/formatter.ts +0 -144
  119. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch-cleanup.ts +0 -132
  120. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch.ts +0 -163
  121. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comment-logic.ts +0 -203
  122. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/common.ts +0 -33
  123. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/create-initial.ts +0 -111
  124. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-claude-comment.ts +0 -70
  125. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-with-branch.ts +0 -57
  126. package/bin/_internal/integrations/github/claude-code-action/src/github/operations/git-config.ts +0 -62
  127. package/bin/_internal/integrations/github/claude-code-action/src/github/token.ts +0 -108
  128. package/bin/_internal/integrations/github/claude-code-action/src/github/types.ts +0 -98
  129. package/bin/_internal/integrations/github/claude-code-action/src/github/utils/image-downloader.ts +0 -246
  130. package/bin/_internal/integrations/github/claude-code-action/src/github/utils/sanitizer.ts +0 -100
  131. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/actor.ts +0 -64
  132. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/permissions.ts +0 -47
  133. package/bin/_internal/integrations/github/claude-code-action/src/github/validation/trigger.ts +0 -148
  134. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-actions-server.ts +0 -279
  135. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-comment-server.ts +0 -101
  136. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-file-ops-server.ts +0 -677
  137. package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-inline-comment-server.ts +0 -184
  138. package/bin/_internal/integrations/github/claude-code-action/src/mcp/install-mcp-server.ts +0 -201
  139. package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/index.ts +0 -152
  140. package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/parse-tools.ts +0 -22
  141. package/bin/_internal/integrations/github/claude-code-action/src/modes/detector.ts +0 -66
  142. package/bin/_internal/integrations/github/claude-code-action/src/modes/registry.ts +0 -54
  143. package/bin/_internal/integrations/github/claude-code-action/src/modes/tag/index.ts +0 -187
  144. package/bin/_internal/integrations/github/claude-code-action/src/modes/types.ts +0 -100
  145. package/bin/_internal/integrations/github/claude-code-action/src/prepare/index.ts +0 -20
  146. package/bin/_internal/integrations/github/claude-code-action/src/prepare/types.ts +0 -20
  147. package/bin/_internal/integrations/github/claude-code-action/src/utils/retry.ts +0 -40
  148. package/bin/_internal/integrations/github/claude-code-action/tsconfig.json +0 -30
  149. package/bin/_internal/integrations/n8n/LICENSE +0 -21
  150. package/bin/_internal/integrations/n8n/README.md +0 -298
  151. package/bin/_internal/integrations/n8n/package-lock.json +0 -2989
  152. package/bin/_internal/integrations/n8n/package.json +0 -68
  153. package/bin/_internal/integrations/n8n/src/credentials/OmnaraApi.credentials.ts +0 -52
  154. package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.json +0 -35
  155. package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.ts +0 -304
  156. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/index.ts +0 -37
  157. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/send.operation.ts +0 -151
  158. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/sendAndWait.operation.ts +0 -252
  159. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/end.operation.ts +0 -56
  160. package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/index.ts +0 -29
  161. package/bin/_internal/integrations/n8n/src/nodes/Omnara/vicoa.png +0 -0
  162. package/bin/_internal/integrations/n8n/src/utils/GenericFunctions.ts +0 -93
  163. package/bin/_internal/integrations/n8n/src/utils/sendAndWait/configureWaitTillDate.ts +0 -42
  164. package/bin/_internal/integrations/n8n/src/utils/sendAndWait/descriptions.ts +0 -20
  165. package/bin/_internal/integrations/n8n/src/utils/sendAndWaitWebhook.ts +0 -72
  166. package/bin/_internal/integrations/n8n/tsconfig.json +0 -20
  167. package/bin/_internal/jiter/jiter.cpython-312-x86_64-linux-gnu.so +0 -0
  168. package/bin/_internal/jsonschema/benchmarks/issue232/issue.json +0 -2653
  169. package/bin/_internal/jsonschema-4.26.0.dist-info/INSTALLER +0 -1
  170. package/bin/_internal/jsonschema-4.26.0.dist-info/METADATA +0 -170
  171. package/bin/_internal/jsonschema-4.26.0.dist-info/RECORD +0 -82
  172. package/bin/_internal/jsonschema-4.26.0.dist-info/WHEEL +0 -4
  173. package/bin/_internal/jsonschema-4.26.0.dist-info/entry_points.txt +0 -2
  174. package/bin/_internal/jsonschema-4.26.0.dist-info/licenses/COPYING +0 -19
  175. package/bin/_internal/jsonschema_specifications/schemas/draft201909/metaschema.json +0 -42
  176. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +0 -56
  177. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/content +0 -17
  178. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/core +0 -57
  179. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/format +0 -14
  180. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +0 -37
  181. package/bin/_internal/jsonschema_specifications/schemas/draft201909/vocabularies/validation +0 -98
  182. package/bin/_internal/jsonschema_specifications/schemas/draft202012/metaschema.json +0 -58
  183. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +0 -48
  184. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/content +0 -17
  185. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/core +0 -51
  186. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +0 -14
  187. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +0 -14
  188. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +0 -37
  189. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +0 -15
  190. package/bin/_internal/jsonschema_specifications/schemas/draft202012/vocabularies/validation +0 -98
  191. package/bin/_internal/jsonschema_specifications/schemas/draft3/metaschema.json +0 -172
  192. package/bin/_internal/jsonschema_specifications/schemas/draft4/metaschema.json +0 -149
  193. package/bin/_internal/jsonschema_specifications/schemas/draft6/metaschema.json +0 -153
  194. package/bin/_internal/jsonschema_specifications/schemas/draft7/metaschema.json +0 -166
  195. package/bin/_internal/libbz2.so.1.0 +0 -0
  196. package/bin/_internal/libcrypto.so.3 +0 -0
  197. package/bin/_internal/libffi.so.8 +0 -0
  198. package/bin/_internal/libgcc_s.so.1 +0 -0
  199. package/bin/_internal/liblzma.so.5 +0 -0
  200. package/bin/_internal/libpython3.12.so.1.0 +0 -0
  201. package/bin/_internal/libreadline.so.8 +0 -0
  202. package/bin/_internal/libssl.so.3 +0 -0
  203. package/bin/_internal/libstdc++.so.6 +0 -0
  204. package/bin/_internal/libtinfo.so.6 +0 -0
  205. package/bin/_internal/libuuid.so.1 +0 -0
  206. package/bin/_internal/libz.so.1 +0 -0
  207. package/bin/_internal/mcp-1.27.0.dist-info/INSTALLER +0 -1
  208. package/bin/_internal/mcp-1.27.0.dist-info/METADATA +0 -230
  209. package/bin/_internal/mcp-1.27.0.dist-info/RECORD +0 -226
  210. package/bin/_internal/mcp-1.27.0.dist-info/WHEEL +0 -4
  211. package/bin/_internal/mcp-1.27.0.dist-info/entry_points.txt +0 -2
  212. package/bin/_internal/mcp-1.27.0.dist-info/licenses/LICENSE +0 -21
  213. package/bin/_internal/multidict/_multidict.cpython-312-x86_64-linux-gnu.so +0 -0
  214. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/INSTALLER +0 -1
  215. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/METADATA +0 -45
  216. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/RECORD +0 -81
  217. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/WHEEL +0 -4
  218. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/entry_points.txt +0 -15
  219. package/bin/_internal/opentelemetry_api-1.41.0.dist-info/licenses/LICENSE +0 -201
  220. package/bin/_internal/propcache/_helpers_c.cpython-312-x86_64-linux-gnu.so +0 -0
  221. package/bin/_internal/pydantic-2.13.2.dist-info/INSTALLER +0 -1
  222. package/bin/_internal/pydantic-2.13.2.dist-info/METADATA +0 -1269
  223. package/bin/_internal/pydantic-2.13.2.dist-info/RECORD +0 -217
  224. package/bin/_internal/pydantic-2.13.2.dist-info/WHEEL +0 -4
  225. package/bin/_internal/pydantic-2.13.2.dist-info/licenses/LICENSE +0 -21
  226. package/bin/_internal/pydantic_core/_pydantic_core.cpython-312-x86_64-linux-gnu.so +0 -0
  227. package/bin/_internal/python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so +0 -0
  228. package/bin/_internal/python3.12/lib-dynload/_bisect.cpython-312-x86_64-linux-gnu.so +0 -0
  229. package/bin/_internal/python3.12/lib-dynload/_blake2.cpython-312-x86_64-linux-gnu.so +0 -0
  230. package/bin/_internal/python3.12/lib-dynload/_bz2.cpython-312-x86_64-linux-gnu.so +0 -0
  231. package/bin/_internal/python3.12/lib-dynload/_codecs_cn.cpython-312-x86_64-linux-gnu.so +0 -0
  232. package/bin/_internal/python3.12/lib-dynload/_codecs_hk.cpython-312-x86_64-linux-gnu.so +0 -0
  233. package/bin/_internal/python3.12/lib-dynload/_codecs_iso2022.cpython-312-x86_64-linux-gnu.so +0 -0
  234. package/bin/_internal/python3.12/lib-dynload/_codecs_jp.cpython-312-x86_64-linux-gnu.so +0 -0
  235. package/bin/_internal/python3.12/lib-dynload/_codecs_kr.cpython-312-x86_64-linux-gnu.so +0 -0
  236. package/bin/_internal/python3.12/lib-dynload/_codecs_tw.cpython-312-x86_64-linux-gnu.so +0 -0
  237. package/bin/_internal/python3.12/lib-dynload/_contextvars.cpython-312-x86_64-linux-gnu.so +0 -0
  238. package/bin/_internal/python3.12/lib-dynload/_csv.cpython-312-x86_64-linux-gnu.so +0 -0
  239. package/bin/_internal/python3.12/lib-dynload/_ctypes.cpython-312-x86_64-linux-gnu.so +0 -0
  240. package/bin/_internal/python3.12/lib-dynload/_datetime.cpython-312-x86_64-linux-gnu.so +0 -0
  241. package/bin/_internal/python3.12/lib-dynload/_decimal.cpython-312-x86_64-linux-gnu.so +0 -0
  242. package/bin/_internal/python3.12/lib-dynload/_hashlib.cpython-312-x86_64-linux-gnu.so +0 -0
  243. package/bin/_internal/python3.12/lib-dynload/_heapq.cpython-312-x86_64-linux-gnu.so +0 -0
  244. package/bin/_internal/python3.12/lib-dynload/_json.cpython-312-x86_64-linux-gnu.so +0 -0
  245. package/bin/_internal/python3.12/lib-dynload/_lzma.cpython-312-x86_64-linux-gnu.so +0 -0
  246. package/bin/_internal/python3.12/lib-dynload/_md5.cpython-312-x86_64-linux-gnu.so +0 -0
  247. package/bin/_internal/python3.12/lib-dynload/_multibytecodec.cpython-312-x86_64-linux-gnu.so +0 -0
  248. package/bin/_internal/python3.12/lib-dynload/_multiprocessing.cpython-312-x86_64-linux-gnu.so +0 -0
  249. package/bin/_internal/python3.12/lib-dynload/_opcode.cpython-312-x86_64-linux-gnu.so +0 -0
  250. package/bin/_internal/python3.12/lib-dynload/_pickle.cpython-312-x86_64-linux-gnu.so +0 -0
  251. package/bin/_internal/python3.12/lib-dynload/_posixshmem.cpython-312-x86_64-linux-gnu.so +0 -0
  252. package/bin/_internal/python3.12/lib-dynload/_posixsubprocess.cpython-312-x86_64-linux-gnu.so +0 -0
  253. package/bin/_internal/python3.12/lib-dynload/_queue.cpython-312-x86_64-linux-gnu.so +0 -0
  254. package/bin/_internal/python3.12/lib-dynload/_random.cpython-312-x86_64-linux-gnu.so +0 -0
  255. package/bin/_internal/python3.12/lib-dynload/_sha1.cpython-312-x86_64-linux-gnu.so +0 -0
  256. package/bin/_internal/python3.12/lib-dynload/_sha2.cpython-312-x86_64-linux-gnu.so +0 -0
  257. package/bin/_internal/python3.12/lib-dynload/_sha3.cpython-312-x86_64-linux-gnu.so +0 -0
  258. package/bin/_internal/python3.12/lib-dynload/_socket.cpython-312-x86_64-linux-gnu.so +0 -0
  259. package/bin/_internal/python3.12/lib-dynload/_ssl.cpython-312-x86_64-linux-gnu.so +0 -0
  260. package/bin/_internal/python3.12/lib-dynload/_statistics.cpython-312-x86_64-linux-gnu.so +0 -0
  261. package/bin/_internal/python3.12/lib-dynload/_struct.cpython-312-x86_64-linux-gnu.so +0 -0
  262. package/bin/_internal/python3.12/lib-dynload/_uuid.cpython-312-x86_64-linux-gnu.so +0 -0
  263. package/bin/_internal/python3.12/lib-dynload/_zoneinfo.cpython-312-x86_64-linux-gnu.so +0 -0
  264. package/bin/_internal/python3.12/lib-dynload/array.cpython-312-x86_64-linux-gnu.so +0 -0
  265. package/bin/_internal/python3.12/lib-dynload/binascii.cpython-312-x86_64-linux-gnu.so +0 -0
  266. package/bin/_internal/python3.12/lib-dynload/fcntl.cpython-312-x86_64-linux-gnu.so +0 -0
  267. package/bin/_internal/python3.12/lib-dynload/grp.cpython-312-x86_64-linux-gnu.so +0 -0
  268. package/bin/_internal/python3.12/lib-dynload/math.cpython-312-x86_64-linux-gnu.so +0 -0
  269. package/bin/_internal/python3.12/lib-dynload/mmap.cpython-312-x86_64-linux-gnu.so +0 -0
  270. package/bin/_internal/python3.12/lib-dynload/pyexpat.cpython-312-x86_64-linux-gnu.so +0 -0
  271. package/bin/_internal/python3.12/lib-dynload/readline.cpython-312-x86_64-linux-gnu.so +0 -0
  272. package/bin/_internal/python3.12/lib-dynload/resource.cpython-312-x86_64-linux-gnu.so +0 -0
  273. package/bin/_internal/python3.12/lib-dynload/select.cpython-312-x86_64-linux-gnu.so +0 -0
  274. package/bin/_internal/python3.12/lib-dynload/syslog.cpython-312-x86_64-linux-gnu.so +0 -0
  275. package/bin/_internal/python3.12/lib-dynload/termios.cpython-312-x86_64-linux-gnu.so +0 -0
  276. package/bin/_internal/python3.12/lib-dynload/unicodedata.cpython-312-x86_64-linux-gnu.so +0 -0
  277. package/bin/_internal/python3.12/lib-dynload/zlib.cpython-312-x86_64-linux-gnu.so +0 -0
  278. package/bin/_internal/rpds/rpds.cpython-312-x86_64-linux-gnu.so +0 -0
  279. package/bin/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt +0 -2
  280. package/bin/_internal/vicoa/_bin/README.md +0 -28
  281. package/bin/_internal/vicoa-1.3.10.dist-info/INSTALLER +0 -1
  282. package/bin/_internal/vicoa-1.3.10.dist-info/METADATA +0 -311
  283. package/bin/_internal/vicoa-1.3.10.dist-info/RECORD +0 -11
  284. package/bin/_internal/vicoa-1.3.10.dist-info/REQUESTED +0 -0
  285. package/bin/_internal/vicoa-1.3.10.dist-info/WHEEL +0 -5
  286. package/bin/_internal/vicoa-1.3.10.dist-info/direct_url.json +0 -1
  287. package/bin/_internal/vicoa-1.3.10.dist-info/entry_points.txt +0 -2
  288. package/bin/_internal/vicoa-1.3.10.dist-info/licenses/LICENSE +0 -201
  289. package/bin/_internal/vicoa-1.3.10.dist-info/top_level.txt +0 -3
  290. package/bin/_internal/watchfiles/_rust_notify.cpython-312-x86_64-linux-gnu.so +0 -0
  291. package/bin/_internal/websockets/speedups.cpython-312-x86_64-linux-gnu.so +0 -0
  292. package/bin/_internal/websockets-16.0.dist-info/INSTALLER +0 -1
  293. package/bin/_internal/websockets-16.0.dist-info/METADATA +0 -179
  294. package/bin/_internal/websockets-16.0.dist-info/RECORD +0 -108
  295. package/bin/_internal/websockets-16.0.dist-info/WHEEL +0 -7
  296. package/bin/_internal/websockets-16.0.dist-info/entry_points.txt +0 -2
  297. package/bin/_internal/websockets-16.0.dist-info/licenses/LICENSE +0 -24
  298. package/bin/_internal/websockets-16.0.dist-info/top_level.txt +0 -1
  299. package/bin/_internal/yaml/_yaml.cpython-312-x86_64-linux-gnu.so +0 -0
  300. package/bin/_internal/yarl/_quoting_c.cpython-312-x86_64-linux-gnu.so +0 -0
  301. package/bin/vicoa +0 -0
@@ -1,466 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: email-validator
3
- Version: 2.3.0
4
- Summary: A robust email address syntax and deliverability validation library.
5
- Home-page: https://github.com/JoshData/python-email-validator
6
- Author: Joshua Tauberer
7
- Author-email: jt@occams.info
8
- License: Unlicense
9
- Keywords: email address validator
10
- Classifier: Development Status :: 5 - Production/Stable
11
- Classifier: Intended Audience :: Developers
12
- Classifier: License :: OSI Approved :: The Unlicense (Unlicense)
13
- Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.8
15
- Classifier: Programming Language :: Python :: 3.9
16
- Classifier: Programming Language :: Python :: 3.10
17
- Classifier: Programming Language :: Python :: 3.11
18
- Classifier: Programming Language :: Python :: 3.12
19
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
- Requires-Python: >=3.8
21
- Description-Content-Type: text/markdown
22
- License-File: LICENSE
23
- Requires-Dist: dnspython>=2.0.0
24
- Requires-Dist: idna>=2.0.0
25
- Dynamic: license-file
26
-
27
- email-validator: Validate Email Addresses
28
- =========================================
29
-
30
- A robust email address syntax and deliverability validation library for
31
- Python 3.8+ by [Joshua Tauberer](https://joshdata.me).
32
-
33
- This library validates that a string is of the form `name@example.com`
34
- and optionally checks that the domain name is set up to receive email.
35
- This is the sort of validation you would want when you are identifying
36
- users by their email address like on a registration form.
37
-
38
- Key features:
39
-
40
- * Checks that an email address has the correct syntax --- great for
41
- email-based registration/login forms or validating data.
42
- * Gives friendly English error messages when validation fails that you
43
- can display to end-users.
44
- * Checks deliverability (optional): Does the domain name resolve?
45
- (You can override the default DNS resolver to add query caching.)
46
- * Supports internationalized domain names (like `@ツ.life`),
47
- internationalized local parts (like `ツ@example.com`),
48
- and optionally parses display names (e.g. `"My Name" <me@example.com>`).
49
- * Rejects addresses with invalid or unsafe Unicode characters,
50
- obsolete email address syntax that you'd find unexpected,
51
- special use domain names like `@localhost`,
52
- and domains without a dot by default.
53
- This is an opinionated library!
54
- * Normalizes email addresses (important for internationalized
55
- and quoted-string addresses! see below).
56
- * Python type annotations are used.
57
-
58
- This is an opinionated library. You should definitely also consider using
59
- the less-opinionated [pyIsEmail](https://github.com/michaelherold/pyIsEmail)
60
- if it works better for you.
61
-
62
- [![Build Status](https://github.com/JoshData/python-email-validator/actions/workflows/test_and_build.yaml/badge.svg)](https://github.com/JoshData/python-email-validator/actions/workflows/test_and_build.yaml)
63
-
64
- View the [CHANGELOG / Release Notes](CHANGELOG.md) for the version history of changes in the library. Occasionally this README is ahead of the latest published package --- see the CHANGELOG for details.
65
-
66
- ---
67
-
68
- Installation
69
- ------------
70
-
71
- This package [is on PyPI](https://pypi.org/project/email-validator/), so:
72
-
73
- ```sh
74
- pip install email-validator
75
- ```
76
-
77
- (You might need to use `pip3` depending on your local environment.)
78
-
79
- Quick Start
80
- -----------
81
-
82
- If you're validating a user's email address before creating a user
83
- account in your application, you might do this:
84
-
85
- ```python
86
- from email_validator import validate_email, EmailNotValidError
87
-
88
- email = "my+address@example.org"
89
-
90
- try:
91
-
92
- # Check that the email address is valid. Turn on check_deliverability
93
- # for first-time validations like on account creation pages (but not
94
- # login pages).
95
- emailinfo = validate_email(email, check_deliverability=False)
96
-
97
- # After this point, use only the normalized form of the email address,
98
- # especially before going to a database query.
99
- email = emailinfo.normalized
100
-
101
- except EmailNotValidError as e:
102
-
103
- # The exception message is human-readable explanation of why it's
104
- # not a valid (or deliverable) email address.
105
- print(str(e))
106
- ```
107
-
108
- This validates the address and gives you its normalized form. You should
109
- **put the normalized form in your database** and always normalize before
110
- checking if an address is in your database. When using this in a login form,
111
- set `check_deliverability` to `False` to avoid unnecessary DNS queries.
112
-
113
- Usage
114
- -----
115
-
116
- ### Overview
117
-
118
- The module provides a function `validate_email(email_address)` which
119
- takes an email address and:
120
-
121
- - Raises a `EmailNotValidError` with a helpful, human-readable error
122
- message explaining why the email address is not valid, or
123
- - Returns an object with a normalized form of the email address (which
124
- you should use!) and other information about it.
125
-
126
- When an email address is not valid, `validate_email` raises either an
127
- `EmailSyntaxError` if the form of the address is invalid or an
128
- `EmailUndeliverableError` if the domain name fails DNS checks. Both
129
- exception classes are subclasses of `EmailNotValidError`, which in turn
130
- is a subclass of `ValueError`.
131
-
132
- But when an email address is valid, an object is returned containing
133
- a normalized form of the email address (which you should use!) and
134
- other information.
135
-
136
- The validator doesn't, by default, permit obsoleted forms of email addresses
137
- that no one uses anymore even though they are still valid and deliverable, since
138
- they will probably give you grief if you're using email for login. (See
139
- later in the document about how to allow some obsolete forms.)
140
-
141
- The validator optionally checks that the domain name in the email address has
142
- a DNS MX record indicating that it can receive email. (Except a Null MX record.
143
- If there is no MX record, a fallback A/AAAA-record is permitted, unless
144
- a reject-all SPF record is present.) DNS is slow and sometimes unavailable or
145
- unreliable, so consider whether these checks are useful for your use case and
146
- turn them off if they aren't.
147
- There is nothing to be gained by trying to actually contact an SMTP server, so
148
- that's not done here. For privacy, security, and practicality reasons, servers
149
- are good at not giving away whether an address is
150
- deliverable or not: email addresses that appear to accept mail at first
151
- can bounce mail after a delay, and bounced mail may indicate a temporary
152
- failure of a good email address (sometimes an intentional failure, like
153
- greylisting).
154
-
155
- ### Options
156
-
157
- The `validate_email` function also accepts the following keyword arguments
158
- (defaults are as shown below):
159
-
160
- `check_deliverability=True`: If true, DNS queries are made to check that the domain name in the email address (the part after the @-sign) can receive mail, as described above. Set to `False` to skip this DNS-based check. It is recommended to pass `False` when performing validation for login pages (but not account creation pages) since re-validation of a previously validated domain in your database by querying DNS at every login is probably undesirable. You can also set `email_validator.CHECK_DELIVERABILITY` to `False` to turn this off for all calls by default.
161
-
162
- `dns_resolver=None`: Pass an instance of [dns.resolver.Resolver](https://dnspython.readthedocs.io/en/latest/resolver-class.html) to control the DNS resolver including setting a timeout and [a cache](https://dnspython.readthedocs.io/en/latest/resolver-caching.html). The `caching_resolver` function shown below is a helper function to construct a dns.resolver.Resolver with a [LRUCache](https://dnspython.readthedocs.io/en/latest/resolver-caching.html#dns.resolver.LRUCache). Reuse the same resolver instance across calls to `validate_email` to make use of the cache.
163
-
164
- `test_environment=False`: If `True`, DNS-based deliverability checks are disabled and `test` and `**.test` domain names are permitted (see below). You can also set `email_validator.TEST_ENVIRONMENT` to `True` to turn it on for all calls by default.
165
-
166
- `allow_smtputf8=True`: Set to `False` to prohibit internationalized addresses that would
167
- require the
168
- [SMTPUTF8](https://tools.ietf.org/html/rfc6531) extension. You can also set `email_validator.ALLOW_SMTPUTF8` to `False` to turn it off for all calls by default.
169
-
170
- `allow_quoted_local=False`: Set to `True` to allow obscure and potentially problematic email addresses in which the part of the address before the @-sign contains spaces, @-signs, or other surprising characters when the local part is surrounded in quotes (so-called quoted-string local parts). In the object returned by `validate_email`, the normalized local part removes any unnecessary backslash-escaping and even removes the surrounding quotes if the address would be valid without them. You can also set `email_validator.ALLOW_QUOTED_LOCAL` to `True` to turn this on for all calls by default.
171
-
172
- `allow_domain_literal=False`: Set to `True` to allow bracketed IPv4 and "IPv6:"-prefixed IPv6 addresses in the domain part of the email address. No deliverability checks are performed for these addresses. In the object returned by `validate_email`, the normalized domain will use the condensed IPv6 format, if applicable. The object's `domain_address` attribute will hold the parsed `ipaddress.IPv4Address` or `ipaddress.IPv6Address` object if applicable. You can also set `email_validator.ALLOW_DOMAIN_LITERAL` to `True` to turn this on for all calls by default.
173
-
174
- `allow_display_name=False`: Set to `True` to allow a display name and bracketed address in the input string, like `My Name <me@example.org>`. It's implemented in the spirit but not the letter of RFC 5322 3.4, so it may be stricter or more relaxed than what you want. The display name, if present, is provided in the returned object's `display_name` field after being unquoted and unescaped. You can also set `email_validator.ALLOW_DISPLAY_NAME` to `True` to turn this on for all calls by default.
175
-
176
- `allow_empty_local=False`: Set to `True` to allow an empty local part (i.e.
177
- `@example.com`), e.g. for validating Postfix aliases.
178
-
179
- `strict=False`: Set to `True` to perform additional syntax checks (currently only a local part length check). This should be used by mail service providers at address creation to ensure email addresses meet broad compatibility requirements.
180
-
181
- ### DNS timeout and cache
182
-
183
- When validating many email addresses or to control the timeout (the default is 15 seconds), create a caching [dns.resolver.Resolver](https://dnspython.readthedocs.io/en/latest/resolver-class.html) to reuse in each call. The `caching_resolver` function returns one easily for you:
184
-
185
- ```python
186
- from email_validator import validate_email, caching_resolver
187
-
188
- resolver = caching_resolver(timeout=10)
189
-
190
- while True:
191
- validate_email(email, dns_resolver=resolver)
192
- ```
193
-
194
- ### Test addresses
195
-
196
- This library rejects email addresses that use the [Special Use Domain Names](https://www.iana.org/assignments/special-use-domain-names/special-use-domain-names.xhtml) `invalid`, `localhost`, `test`, and some others by raising `EmailSyntaxError`. This is to protect your system from abuse: You probably don't want a user to be able to cause an email to be sent to `localhost` (although they might be able to still do so via a malicious MX record). However, in your non-production test environments you may want to use `@test` or `@myname.test` email addresses. There are three ways you can allow this:
197
-
198
- 1. Add `test_environment=True` to the call to `validate_email` (see above).
199
- 2. Set `email_validator.TEST_ENVIRONMENT` to `True` globally.
200
- 3. Remove the special-use domain name that you want to use from `email_validator.SPECIAL_USE_DOMAIN_NAMES`, e.g.:
201
-
202
- ```python
203
- import email_validator
204
- email_validator.SPECIAL_USE_DOMAIN_NAMES.remove("test")
205
- ```
206
-
207
- It is tempting to use `@example.com/net/org` in tests. They are *not* in this library's `SPECIAL_USE_DOMAIN_NAMES` list so you can, but shouldn't, use them. These domains are reserved to IANA for use in documentation so there is no risk of accidentally emailing someone at those domains. But beware that this library will nevertheless reject these domain names if DNS-based deliverability checks are not disabled because these domains do not resolve to domains that accept email. In tests, consider using your own domain name or `@test` or `@myname.test` instead.
208
-
209
- Internationalized email addresses
210
- ---------------------------------
211
-
212
- The email protocol SMTP and the domain name system DNS have historically
213
- only allowed English (ASCII) characters in email addresses and domain names,
214
- respectively. Each has adapted to internationalization in a separate
215
- way, creating two separate aspects to email address internationalization.
216
-
217
- (If your mail submission library doesn't support Unicode at all, then
218
- immediately prior to mail submission you must replace the email address with
219
- its ASCII-ized form. This library gives you back the ASCII-ized form in the
220
- `ascii_email` field in the returned object.)
221
-
222
- ### Internationalized domain names (IDN)
223
-
224
- The first is [internationalized domain names (RFC
225
- 5891)](https://tools.ietf.org/html/rfc5891), a.k.a IDNA 2008. The DNS
226
- system has not been updated with Unicode support. Instead, internationalized
227
- domain names are converted into a special IDNA ASCII "[Punycode](https://www.rfc-editor.org/rfc/rfc3492.txt)"
228
- form starting with `xn--`. When an email address has non-ASCII
229
- characters in its domain part, the domain part is replaced with its IDNA
230
- ASCII equivalent form in the process of mail transmission. Your mail
231
- submission library probably does this for you transparently. ([Compliance
232
- around the web is not very good though](http://archives.miloush.net/michkap/archive/2012/02/27/10273315.html).) This library conforms to IDNA 2008
233
- using the [idna](https://github.com/kjd/idna) module by Kim Davies.
234
-
235
- ### Internationalized local parts
236
-
237
- The second sort of internationalization is internationalization in the
238
- *local* part of the address (before the @-sign). In non-internationalized
239
- email addresses, only English letters, numbers, and some punctuation
240
- (`._!#$%&'^``*+-=~/?{|}`) are allowed. In internationalized email address
241
- local parts, a wider range of Unicode characters are allowed.
242
-
243
- Email addresses with these non-ASCII characters require that your mail
244
- submission library and all the mail servers along the route to the destination,
245
- including your own outbound mail server, all support the
246
- [SMTPUTF8 (RFC 6531)](https://tools.ietf.org/html/rfc6531) extension.
247
- Support for SMTPUTF8 varies. If you know ahead of time that SMTPUTF8 is not
248
- supported by your mail submission stack, then you must filter out addresses that
249
- require SMTPUTF8 using the `allow_smtputf8=False` keyword argument (see above).
250
- This will cause the validation function to raise a `EmailSyntaxError` if
251
- delivery would require SMTPUTF8. If you do not set `allow_smtputf8=False`,
252
- you can also check the value of the `smtputf8` field in the returned object.
253
-
254
- ### Unsafe Unicode characters are rejected
255
-
256
- A surprisingly large number of Unicode characters are not safe to display,
257
- especially when the email address is concatenated with other text, so this
258
- library tries to protect you by not permitting reserved, non-, private use,
259
- formatting (which can be used to alter the display order of characters),
260
- whitespace, and control characters, and combining characters
261
- as the first character of the local part and the domain name (so that they
262
- cannot combine with something outside of the email address string or with
263
- the @-sign). See https://qntm.org/safe and https://trojansource.codes/
264
- for relevant prior work. (Other than whitespace, these are checks that
265
- you should be applying to nearly all user inputs in a security-sensitive
266
- context.) This does not guard against the well known problem that many
267
- Unicode characters look alike, which can be used to fool humans reading
268
- displayed text.
269
-
270
-
271
- Normalization
272
- -------------
273
-
274
- ### Unicode Normalization
275
-
276
- The use of Unicode in email addresses introduced a normalization
277
- problem. Different Unicode strings can look identical and have the same
278
- semantic meaning to the user. The `normalized` field returned on successful
279
- validation provides the correctly normalized form of the given email
280
- address.
281
-
282
- For example, the CJK fullwidth Latin letters are considered semantically
283
- equivalent in domain names to their ASCII counterparts. This library
284
- normalizes them to their ASCII counterparts (as required by IDNA):
285
-
286
- ```python
287
- emailinfo = validate_email("me@Domain.com")
288
- print(emailinfo.normalized)
289
- print(emailinfo.ascii_email)
290
- # prints "me@domain.com" twice
291
- ```
292
-
293
- Because an end-user might type their email address in different (but
294
- equivalent) un-normalized forms at different times, you ought to
295
- replace what they enter with the normalized form immediately prior to
296
- going into your database (during account creation), querying your database
297
- (during login), or sending outbound mail.
298
-
299
- The normalizations include lowercasing the domain part of the email
300
- address (domain names are case-insensitive), [Unicode "NFC"
301
- normalization](https://en.wikipedia.org/wiki/Unicode_equivalence) of the
302
- whole address (which turns characters plus [combining
303
- characters](https://en.wikipedia.org/wiki/Combining_character) into
304
- precomposed characters where possible, replacement of [fullwidth and
305
- halfwidth
306
- characters](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
307
- in the domain part, possibly other
308
- [UTS46](http://unicode.org/reports/tr46) mappings on the domain part,
309
- and conversion from Punycode to Unicode characters.
310
-
311
- Normalization may change the characters in the email address and the
312
- length of the email address, such that a string might be a valid address
313
- before normalization but invalid after, or vice versa. This library only
314
- permits addresses that are valid both before and after normalization.
315
-
316
- (See [RFC 6532 (internationalized email) section
317
- 3.1](https://tools.ietf.org/html/rfc6532#section-3.1) and [RFC 5895
318
- (IDNA 2008) section 2](http://www.ietf.org/rfc/rfc5895.txt).)
319
-
320
- ### Other Normalization
321
-
322
- Normalization is also applied to quoted-string local parts and domain
323
- literal IPv6 addresses if you have allowed them by the `allow_quoted_local`
324
- and `allow_domain_literal` options. In quoted-string local parts, unnecessary
325
- backslash escaping is removed and even the surrounding quotes are removed if
326
- they are unnecessary. For IPv6 domain literals, the IPv6 address is
327
- normalized to condensed form. [RFC 2142](https://datatracker.ietf.org/doc/html/rfc2142)
328
- also requires lowercase normalization for some specific mailbox names like `postmaster@`.
329
-
330
-
331
- Examples
332
- --------
333
-
334
- For the email address `test@joshdata.me`, the returned object is:
335
-
336
- ```python
337
- ValidatedEmail(
338
- normalized='test@joshdata.me',
339
- local_part='test',
340
- domain='joshdata.me',
341
- ascii_email='test@joshdata.me',
342
- ascii_local_part='test',
343
- ascii_domain='joshdata.me',
344
- smtputf8=False)
345
- ```
346
-
347
- For the fictitious but valid address `example@ツ.ⓁⒾⒻⒺ`, which has an
348
- internationalized domain but ASCII local part, the returned object is:
349
-
350
- ```python
351
- ValidatedEmail(
352
- normalized='example@ツ.life',
353
- local_part='example',
354
- domain='ツ.life',
355
- ascii_email='example@xn--bdk.life',
356
- ascii_local_part='example',
357
- ascii_domain='xn--bdk.life',
358
- smtputf8=False)
359
-
360
- ```
361
-
362
- Note that `normalized` and other fields provide a normalized form of the
363
- email address, domain name, and (in other cases) local part (see earlier
364
- discussion of normalization), which you should use in your database.
365
-
366
- Calling `validate_email` with the ASCII form of the above email address,
367
- `example@xn--bdk.life`, returns the exact same information (i.e., the
368
- `normalized` field always will contain Unicode characters, not Punycode).
369
-
370
- For the fictitious address `ツ-test@joshdata.me`, which has an
371
- internationalized local part, the returned object is:
372
-
373
- ```python
374
- ValidatedEmail(
375
- normalized='ツ-test@joshdata.me',
376
- local_part='ツ-test',
377
- domain='joshdata.me',
378
- ascii_email=None,
379
- ascii_local_part=None,
380
- ascii_domain='joshdata.me',
381
- smtputf8=True)
382
- ```
383
-
384
- Now `smtputf8` is `True` and `ascii_email` is `None` because the local
385
- part of the address is internationalized. The `local_part` and `normalized` fields
386
- return the normalized form of the address.
387
-
388
- Return value
389
- ------------
390
-
391
- When an email address passes validation, the fields in the returned object
392
- are:
393
-
394
- | Field | Value |
395
- | -----:|-------|
396
- | `normalized` | The normalized form of the email address that you should put in your database. This combines the `local_part` and `domain` fields (see below). |
397
- | `ascii_email` | If set, an ASCII-only form of the normalized email address by replacing the domain part with [IDNA](https://tools.ietf.org/html/rfc5891) [Punycode](https://www.rfc-editor.org/rfc/rfc3492.txt). This field will be present when an ASCII-only form of the email address exists (including if the email address is already ASCII). If the local part of the email address contains internationalized characters, `ascii_email` will be `None`. If set, it merely combines `ascii_local_part` and `ascii_domain`. |
398
- | `local_part` | The normalized local part of the given email address (before the @-sign). Normalization includes Unicode NFC normalization and removing unnecessary quoted-string quotes and backslashes. If `allow_quoted_local` is True and the surrounding quotes are necessary, the quotes _will_ be present in this field. |
399
- | `ascii_local_part` | If set, the local part, which is composed of ASCII characters only. |
400
- | `domain` | The canonical internationalized Unicode form of the domain part of the email address. If the returned string contains non-ASCII characters, either the [SMTPUTF8](https://tools.ietf.org/html/rfc6531) feature of your mail relay will be required to transmit the message or else the email address's domain part must be converted to IDNA ASCII first: Use `ascii_domain` field instead. |
401
- | `ascii_domain` | The [IDNA](https://tools.ietf.org/html/rfc5891) [Punycode](https://www.rfc-editor.org/rfc/rfc3492.txt)-encoded form of the domain part of the given email address, as it would be transmitted on the wire. |
402
- | `domain_address` | If domain literals are allowed and if the email address contains one, an `ipaddress.IPv4Address` or `ipaddress.IPv6Address` object. |
403
- | `display_name` | If no display name was present and angle brackets do not surround the address, this will be `None`; otherwise, it will be set to the display name, or the empty string if there were angle brackets but no display name. If the display name was quoted, it will be unquoted and unescaped. |
404
- | `smtputf8` | A boolean indicating that the [SMTPUTF8](https://tools.ietf.org/html/rfc6531) feature of your mail relay will be required to transmit messages to this address because the local part of the address has non-ASCII characters (the local part cannot be IDNA-encoded). If `allow_smtputf8=False` is passed as an argument, this flag will always be false because an exception is raised if it would have been true. |
405
- | `mx` | A list of (priority, domain) tuples of MX records specified in the DNS for the domain (see [RFC 5321 section 5](https://tools.ietf.org/html/rfc5321#section-5)). May be `None` if the deliverability check could not be completed because of a temporary issue like a timeout. |
406
- | `mx_fallback_type` | `None` if an `MX` record is found. If no MX records are actually specified in DNS and instead are inferred, through an obsolete mechanism, from A or AAAA records, the value is the type of DNS record used instead (`A` or `AAAA`). May be `None` if the deliverability check could not be completed because of a temporary issue like a timeout. |
407
- | `spf` | Any SPF record found while checking deliverability. Only set if the SPF record is queried. |
408
-
409
- Assumptions
410
- -----------
411
-
412
- By design, this validator does not pass all email addresses that
413
- strictly conform to the standards. Many email address forms are obsolete
414
- or likely to cause trouble:
415
-
416
- * The validator assumes the email address is intended to be
417
- usable on the public Internet. The domain part
418
- of the email address must be a resolvable domain name
419
- (see the deliverability checks described above).
420
- Most [Special Use Domain Names](https://www.iana.org/assignments/special-use-domain-names/special-use-domain-names.xhtml)
421
- and their subdomains, as well as
422
- domain names without a `.`, are rejected as a syntax error
423
- (except see the `test_environment` parameter above).
424
- * Obsolete email syntaxes are rejected:
425
- The unusual ["(comment)" syntax](https://github.com/JoshData/python-email-validator/issues/77)
426
- is rejected. Extremely old obsolete syntaxes are
427
- rejected. Quoted-string local parts and domain-literal addresses
428
- are rejected by default, but there are options to allow them (see above).
429
- No one uses these forms anymore, and I can't think of any reason why anyone
430
- using this library would need to accept them.
431
-
432
- Testing
433
- -------
434
-
435
- Tests can be run using
436
-
437
- ```sh
438
- pip install -r test_requirements.txt
439
- make test
440
- ```
441
-
442
- Tests run with mocked DNS responses. When adding or changing tests, temporarily turn on the `BUILD_MOCKED_DNS_RESPONSE_DATA` flag in `tests/mocked_dns_responses.py` to re-build the database of mocked responses from live queries.
443
-
444
- For Project Maintainers
445
- -----------------------
446
-
447
- The package is distributed as a universal wheel and as a source package.
448
-
449
- To release:
450
-
451
- * Update CHANGELOG.md.
452
- * Update the version number in `email_validator/version.py`.
453
- * Make & push a commit with the new version number and make sure tests pass.
454
- * Make a release at https://github.com/JoshData/python-email-validator/releases/new creating a new tag (or use command below).
455
- * Publish a source and wheel distribution to pypi (see command below).
456
-
457
- ```sh
458
- git tag v$(cat email_validator/version.py | sed "s/.* = //" | sed 's/"//g')
459
- git push --tags
460
- ./release_to_pypi.sh
461
- ```
462
-
463
- License
464
- -------
465
-
466
- This project is free of any copyright restrictions per the [Unlicense](https://unlicense.org/). (Prior to Feb. 4, 2024, the project was made available under the terms of the [CC0 1.0 Universal public domain dedication](http://creativecommons.org/publicdomain/zero/1.0/).) See [LICENSE](LICENSE) and [CONTRIBUTING.md](CONTRIBUTING.md).
@@ -1,27 +0,0 @@
1
- ../../../bin/email_validator,sha256=cU72Y3pxP73JTpzLFjJHWWFs5WJCcO2GmJiI6UVE1m4,205
2
- email_validator-2.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
3
- email_validator-2.3.0.dist-info/METADATA,sha256=Kpe4Hu_NhWvICwNG9H-i2AC5pDi_j5IxrgD-kx1cn7w,26006
4
- email_validator-2.3.0.dist-info/RECORD,,
5
- email_validator-2.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
6
- email_validator-2.3.0.dist-info/entry_points.txt,sha256=zRM_6bNIUSHTbNx5u6M3nK1MAguvryrc9hICC6HyrBg,66
7
- email_validator-2.3.0.dist-info/licenses/LICENSE,sha256=ZyF5dS4QkTSj-yvdB4Cyn9t6A5dPD1hqE66tUSlWLUw,1212
8
- email_validator-2.3.0.dist-info/top_level.txt,sha256=fYDOSWFZke46ut7WqdOAJjjhlpPYAaOwOwIsh3s8oWI,16
9
- email_validator/__init__.py,sha256=g3oVBGdXGJATgBnVqt5Q7pUhXM9QrmOl5qWSu_RtWmQ,4381
10
- email_validator/__main__.py,sha256=uc6i2EMCK67cCgcHr5ZFG5LqB3khljmR7lNAYZGSUKY,2302
11
- email_validator/__pycache__/__init__.cpython-312.pyc,,
12
- email_validator/__pycache__/__main__.cpython-312.pyc,,
13
- email_validator/__pycache__/deliverability.cpython-312.pyc,,
14
- email_validator/__pycache__/exceptions.cpython-312.pyc,,
15
- email_validator/__pycache__/rfc_constants.cpython-312.pyc,,
16
- email_validator/__pycache__/syntax.cpython-312.pyc,,
17
- email_validator/__pycache__/types.cpython-312.pyc,,
18
- email_validator/__pycache__/validate_email.cpython-312.pyc,,
19
- email_validator/__pycache__/version.cpython-312.pyc,,
20
- email_validator/deliverability.py,sha256=ZIjFkgWMzxYexanwKhrRHLTnjWMqlR5b0ltOnlA0u-E,7216
21
- email_validator/exceptions.py,sha256=Ry2j5FMpEe9JthmTF3zF5pGgWer-QmWc1m0szXAZ7fo,434
22
- email_validator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- email_validator/rfc_constants.py,sha256=LhUiBZLBw_Nn-KHkH--nVwOWFlgz2aCuauj98ZSl-gk,3443
24
- email_validator/syntax.py,sha256=puufskeIG6_ORWb7fvRdV_Yczmk4bibNZPs9TjWE1K0,38971
25
- email_validator/types.py,sha256=mvmwN9R3lFx9Tv9wtWvDzxfit6mr_5wQmY2I0HjuqRk,5588
26
- email_validator/validate_email.py,sha256=bmrdQ9dGt1-Mk0rwDRrX-l6xbYhQ0US20Dz46Aatnkk,9928
27
- email_validator/version.py,sha256=CpK8IH_dCUAwg9tqv7zm9FxbBFkxCnED1JUiRe7cftU,22
@@ -1,5 +0,0 @@
1
- Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
3
- Root-Is-Purelib: true
4
- Tag: py3-none-any
5
-
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- email_validator = email_validator.__main__:main
@@ -1,27 +0,0 @@
1
- This is free and unencumbered software released into the public
2
- domain.
3
-
4
- Anyone is free to copy, modify, publish, use, compile, sell, or
5
- distribute this software, either in source code form or as a
6
- compiled binary, for any purpose, commercial or non-commercial,
7
- and by any means.
8
-
9
- In jurisdictions that recognize copyright laws, the author or
10
- authors of this software dedicate any and all copyright
11
- interest in the software to the public domain. We make this
12
- dedication for the benefit of the public at large and to the
13
- detriment of our heirs and successors. We intend this
14
- dedication to be an overt act of relinquishment in perpetuity
15
- of all present and future rights to this software under
16
- copyright law.
17
-
18
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
22
- ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
23
- CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
- THE SOFTWARE.
26
-
27
- For more information, please refer to <https://unlicense.org/>
@@ -1 +0,0 @@
1
- email_validator