Metadata-Version: 2.4
Name: cybersecure-easy
Version: 0.4.0
Summary: 1400+ Filetypes across 10 security verbs (Extract/Scan/Hash/Encrypt/Decrypt/Encode/Decode/Validate/Generate/Sanitize) with consistent Filetype=/Target=/Variable= syntax, plus 120 lazy package adapters and sandboxed iframe HTML
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: network
Requires-Dist: scapy; extra == "network"
Requires-Dist: python-nmap; extra == "network"
Provides-Extra: web
Requires-Dist: requests; extra == "web"
Requires-Dist: beautifulsoup4; extra == "web"
Provides-Extra: crypto
Requires-Dist: pycryptodome>=3.19; extra == "crypto"
Provides-Extra: yara
Requires-Dist: yara-python; extra == "yara"
Provides-Extra: pkg-httpx
Requires-Dist: httpx; extra == "pkg-httpx"
Provides-Extra: pkg-aiohttp
Requires-Dist: aiohttp; extra == "pkg-aiohttp"
Provides-Extra: pkg-urllib3
Requires-Dist: urllib3; extra == "pkg-urllib3"
Provides-Extra: pkg-h11
Requires-Dist: h11; extra == "pkg-h11"
Provides-Extra: pkg-h2
Requires-Dist: h2; extra == "pkg-h2"
Provides-Extra: pkg-httptools
Requires-Dist: httptools; extra == "pkg-httptools"
Provides-Extra: pkg-requests-cache
Requires-Dist: requests-cache; extra == "pkg-requests-cache"
Provides-Extra: pkg-requests-toolbelt
Requires-Dist: requests-toolbelt; extra == "pkg-requests-toolbelt"
Provides-Extra: pkg-tenacity
Requires-Dist: tenacity; extra == "pkg-tenacity"
Provides-Extra: pkg-backoff
Requires-Dist: backoff; extra == "pkg-backoff"
Provides-Extra: pkg-lxml
Requires-Dist: lxml; extra == "pkg-lxml"
Provides-Extra: pkg-html5lib
Requires-Dist: html5lib; extra == "pkg-html5lib"
Provides-Extra: pkg-cssselect
Requires-Dist: cssselect; extra == "pkg-cssselect"
Provides-Extra: pkg-soupsieve
Requires-Dist: soupsieve; extra == "pkg-soupsieve"
Provides-Extra: pkg-selectolax
Requires-Dist: selectolax; extra == "pkg-selectolax"
Provides-Extra: pkg-bleach
Requires-Dist: bleach; extra == "pkg-bleach"
Provides-Extra: pkg-nh3
Requires-Dist: nh3; extra == "pkg-nh3"
Provides-Extra: pkg-markdown-it-py
Requires-Dist: markdown-it-py; extra == "pkg-markdown-it-py"
Provides-Extra: pkg-mistune
Requires-Dist: mistune; extra == "pkg-mistune"
Provides-Extra: pkg-jinja2
Requires-Dist: Jinja2; extra == "pkg-jinja2"
Provides-Extra: pkg-pydantic
Requires-Dist: pydantic; extra == "pkg-pydantic"
Provides-Extra: pkg-jsonschema
Requires-Dist: jsonschema; extra == "pkg-jsonschema"
Provides-Extra: pkg-marshmallow
Requires-Dist: marshmallow; extra == "pkg-marshmallow"
Provides-Extra: pkg-attrs
Requires-Dist: attrs; extra == "pkg-attrs"
Provides-Extra: pkg-cattrs
Requires-Dist: cattrs; extra == "pkg-cattrs"
Provides-Extra: pkg-cerberus
Requires-Dist: cerberus; extra == "pkg-cerberus"
Provides-Extra: pkg-voluptuous
Requires-Dist: voluptuous; extra == "pkg-voluptuous"
Provides-Extra: pkg-email-validator
Requires-Dist: email-validator; extra == "pkg-email-validator"
Provides-Extra: pkg-validators
Requires-Dist: validators; extra == "pkg-validators"
Provides-Extra: pkg-referencing
Requires-Dist: referencing; extra == "pkg-referencing"
Provides-Extra: pkg-cryptography
Requires-Dist: cryptography; extra == "pkg-cryptography"
Provides-Extra: pkg-bcrypt
Requires-Dist: bcrypt; extra == "pkg-bcrypt"
Provides-Extra: pkg-argon2-cffi
Requires-Dist: argon2-cffi; extra == "pkg-argon2-cffi"
Provides-Extra: pkg-pynacl
Requires-Dist: PyNaCl; extra == "pkg-pynacl"
Provides-Extra: pkg-pyjwt
Requires-Dist: PyJWT; extra == "pkg-pyjwt"
Provides-Extra: pkg-itsdangerous
Requires-Dist: itsdangerous; extra == "pkg-itsdangerous"
Provides-Extra: pkg-pyopenssl
Requires-Dist: pyOpenSSL; extra == "pkg-pyopenssl"
Provides-Extra: pkg-pyotp
Requires-Dist: pyotp; extra == "pkg-pyotp"
Provides-Extra: pkg-keyring
Requires-Dist: keyring; extra == "pkg-keyring"
Provides-Extra: pkg-zxcvbn
Requires-Dist: zxcvbn; extra == "pkg-zxcvbn"
Provides-Extra: pkg-dnspython
Requires-Dist: dnspython; extra == "pkg-dnspython"
Provides-Extra: pkg-netaddr
Requires-Dist: netaddr; extra == "pkg-netaddr"
Provides-Extra: pkg-psutil
Requires-Dist: psutil; extra == "pkg-psutil"
Provides-Extra: pkg-ifaddr
Requires-Dist: ifaddr; extra == "pkg-ifaddr"
Provides-Extra: pkg-paramiko
Requires-Dist: paramiko; extra == "pkg-paramiko"
Provides-Extra: pkg-asyncssh
Requires-Dist: asyncssh; extra == "pkg-asyncssh"
Provides-Extra: pkg-fabric
Requires-Dist: fabric; extra == "pkg-fabric"
Provides-Extra: pkg-invoke
Requires-Dist: invoke; extra == "pkg-invoke"
Provides-Extra: pkg-websocket-client
Requires-Dist: websocket-client; extra == "pkg-websocket-client"
Provides-Extra: pkg-websockets
Requires-Dist: websockets; extra == "pkg-websockets"
Provides-Extra: pkg-numpy
Requires-Dist: numpy; extra == "pkg-numpy"
Provides-Extra: pkg-pandas
Requires-Dist: pandas; extra == "pkg-pandas"
Provides-Extra: pkg-polars
Requires-Dist: polars; extra == "pkg-polars"
Provides-Extra: pkg-pyarrow
Requires-Dist: pyarrow; extra == "pkg-pyarrow"
Provides-Extra: pkg-orjson
Requires-Dist: orjson; extra == "pkg-orjson"
Provides-Extra: pkg-ujson
Requires-Dist: ujson; extra == "pkg-ujson"
Provides-Extra: pkg-simplejson
Requires-Dist: simplejson; extra == "pkg-simplejson"
Provides-Extra: pkg-msgpack
Requires-Dist: msgpack; extra == "pkg-msgpack"
Provides-Extra: pkg-pyyaml
Requires-Dist: PyYAML; extra == "pkg-pyyaml"
Provides-Extra: pkg-tomlkit
Requires-Dist: tomlkit; extra == "pkg-tomlkit"
Provides-Extra: pkg-sqlalchemy
Requires-Dist: SQLAlchemy; extra == "pkg-sqlalchemy"
Provides-Extra: pkg-aiosqlite
Requires-Dist: aiosqlite; extra == "pkg-aiosqlite"
Provides-Extra: pkg-asyncpg
Requires-Dist: asyncpg; extra == "pkg-asyncpg"
Provides-Extra: pkg-psycopg
Requires-Dist: psycopg; extra == "pkg-psycopg"
Provides-Extra: pkg-pymysql
Requires-Dist: PyMySQL; extra == "pkg-pymysql"
Provides-Extra: pkg-redis
Requires-Dist: redis; extra == "pkg-redis"
Provides-Extra: pkg-pymongo
Requires-Dist: pymongo; extra == "pkg-pymongo"
Provides-Extra: pkg-peewee
Requires-Dist: peewee; extra == "pkg-peewee"
Provides-Extra: pkg-sqlparse
Requires-Dist: sqlparse; extra == "pkg-sqlparse"
Provides-Extra: pkg-duckdb
Requires-Dist: duckdb; extra == "pkg-duckdb"
Provides-Extra: pkg-click
Requires-Dist: click; extra == "pkg-click"
Provides-Extra: pkg-typer
Requires-Dist: typer; extra == "pkg-typer"
Provides-Extra: pkg-rich
Requires-Dist: rich; extra == "pkg-rich"
Provides-Extra: pkg-colorama
Requires-Dist: colorama; extra == "pkg-colorama"
Provides-Extra: pkg-tqdm
Requires-Dist: tqdm; extra == "pkg-tqdm"
Provides-Extra: pkg-loguru
Requires-Dist: loguru; extra == "pkg-loguru"
Provides-Extra: pkg-structlog
Requires-Dist: structlog; extra == "pkg-structlog"
Provides-Extra: pkg-python-dotenv
Requires-Dist: python-dotenv; extra == "pkg-python-dotenv"
Provides-Extra: pkg-platformdirs
Requires-Dist: platformdirs; extra == "pkg-platformdirs"
Provides-Extra: pkg-tabulate
Requires-Dist: tabulate; extra == "pkg-tabulate"
Provides-Extra: pkg-pillow
Requires-Dist: Pillow; extra == "pkg-pillow"
Provides-Extra: pkg-pypdf
Requires-Dist: pypdf; extra == "pkg-pypdf"
Provides-Extra: pkg-openpyxl
Requires-Dist: openpyxl; extra == "pkg-openpyxl"
Provides-Extra: pkg-xlsxwriter
Requires-Dist: XlsxWriter; extra == "pkg-xlsxwriter"
Provides-Extra: pkg-python-docx
Requires-Dist: python-docx; extra == "pkg-python-docx"
Provides-Extra: pkg-python-pptx
Requires-Dist: python-pptx; extra == "pkg-python-pptx"
Provides-Extra: pkg-defusedxml
Requires-Dist: defusedxml; extra == "pkg-defusedxml"
Provides-Extra: pkg-filelock
Requires-Dist: filelock; extra == "pkg-filelock"
Provides-Extra: pkg-watchdog
Requires-Dist: watchdog; extra == "pkg-watchdog"
Provides-Extra: pkg-pathspec
Requires-Dist: pathspec; extra == "pkg-pathspec"
Provides-Extra: pkg-pytest
Requires-Dist: pytest; extra == "pkg-pytest"
Provides-Extra: pkg-hypothesis
Requires-Dist: hypothesis; extra == "pkg-hypothesis"
Provides-Extra: pkg-coverage
Requires-Dist: coverage; extra == "pkg-coverage"
Provides-Extra: pkg-mypy
Requires-Dist: mypy; extra == "pkg-mypy"
Provides-Extra: pkg-pylint
Requires-Dist: pylint; extra == "pkg-pylint"
Provides-Extra: pkg-flake8
Requires-Dist: flake8; extra == "pkg-flake8"
Provides-Extra: pkg-black
Requires-Dist: black; extra == "pkg-black"
Provides-Extra: pkg-isort
Requires-Dist: isort; extra == "pkg-isort"
Provides-Extra: pkg-autopep8
Requires-Dist: autopep8; extra == "pkg-autopep8"
Provides-Extra: pkg-radon
Requires-Dist: radon; extra == "pkg-radon"
Provides-Extra: pkg-fastapi
Requires-Dist: fastapi; extra == "pkg-fastapi"
Provides-Extra: pkg-starlette
Requires-Dist: starlette; extra == "pkg-starlette"
Provides-Extra: pkg-flask
Requires-Dist: Flask; extra == "pkg-flask"
Provides-Extra: pkg-werkzeug
Requires-Dist: Werkzeug; extra == "pkg-werkzeug"
Provides-Extra: pkg-django
Requires-Dist: Django; extra == "pkg-django"
Provides-Extra: pkg-uvicorn
Requires-Dist: uvicorn; extra == "pkg-uvicorn"
Provides-Extra: pkg-hypercorn
Requires-Dist: hypercorn; extra == "pkg-hypercorn"
Provides-Extra: pkg-tornado
Requires-Dist: tornado; extra == "pkg-tornado"
Provides-Extra: pkg-sanic
Requires-Dist: sanic; extra == "pkg-sanic"
Provides-Extra: pkg-falcon
Requires-Dist: falcon; extra == "pkg-falcon"
Provides-Extra: pkg-packaging
Requires-Dist: packaging; extra == "pkg-packaging"
Provides-Extra: pkg-python-dateutil
Requires-Dist: python-dateutil; extra == "pkg-python-dateutil"
Provides-Extra: pkg-pendulum
Requires-Dist: pendulum; extra == "pkg-pendulum"
Provides-Extra: pkg-arrow
Requires-Dist: arrow; extra == "pkg-arrow"
Provides-Extra: pkg-humanize
Requires-Dist: humanize; extra == "pkg-humanize"
Provides-Extra: pkg-cachetools
Requires-Dist: cachetools; extra == "pkg-cachetools"
Provides-Extra: pkg-diskcache
Requires-Dist: diskcache; extra == "pkg-diskcache"
Provides-Extra: pkg-more-itertools
Requires-Dist: more-itertools; extra == "pkg-more-itertools"
Provides-Extra: pkg-sortedcontainers
Requires-Dist: sortedcontainers; extra == "pkg-sortedcontainers"
Provides-Extra: pkg-boltons
Requires-Dist: boltons; extra == "pkg-boltons"
Provides-Extra: integrations-cli
Requires-Dist: click; extra == "integrations-cli"
Requires-Dist: typer; extra == "integrations-cli"
Requires-Dist: rich; extra == "integrations-cli"
Requires-Dist: colorama; extra == "integrations-cli"
Requires-Dist: tqdm; extra == "integrations-cli"
Requires-Dist: loguru; extra == "integrations-cli"
Requires-Dist: structlog; extra == "integrations-cli"
Requires-Dist: python-dotenv; extra == "integrations-cli"
Requires-Dist: platformdirs; extra == "integrations-cli"
Requires-Dist: tabulate; extra == "integrations-cli"
Provides-Extra: integrations-crypto
Requires-Dist: cryptography; extra == "integrations-crypto"
Requires-Dist: bcrypt; extra == "integrations-crypto"
Requires-Dist: argon2-cffi; extra == "integrations-crypto"
Requires-Dist: PyNaCl; extra == "integrations-crypto"
Requires-Dist: PyJWT; extra == "integrations-crypto"
Requires-Dist: itsdangerous; extra == "integrations-crypto"
Requires-Dist: pyOpenSSL; extra == "integrations-crypto"
Requires-Dist: pyotp; extra == "integrations-crypto"
Requires-Dist: keyring; extra == "integrations-crypto"
Requires-Dist: zxcvbn; extra == "integrations-crypto"
Provides-Extra: integrations-data
Requires-Dist: numpy; extra == "integrations-data"
Requires-Dist: pandas; extra == "integrations-data"
Requires-Dist: polars; extra == "integrations-data"
Requires-Dist: pyarrow; extra == "integrations-data"
Requires-Dist: orjson; extra == "integrations-data"
Requires-Dist: ujson; extra == "integrations-data"
Requires-Dist: simplejson; extra == "integrations-data"
Requires-Dist: msgpack; extra == "integrations-data"
Requires-Dist: PyYAML; extra == "integrations-data"
Requires-Dist: tomlkit; extra == "integrations-data"
Provides-Extra: integrations-database
Requires-Dist: SQLAlchemy; extra == "integrations-database"
Requires-Dist: aiosqlite; extra == "integrations-database"
Requires-Dist: asyncpg; extra == "integrations-database"
Requires-Dist: psycopg; extra == "integrations-database"
Requires-Dist: PyMySQL; extra == "integrations-database"
Requires-Dist: redis; extra == "integrations-database"
Requires-Dist: pymongo; extra == "integrations-database"
Requires-Dist: peewee; extra == "integrations-database"
Requires-Dist: sqlparse; extra == "integrations-database"
Requires-Dist: duckdb; extra == "integrations-database"
Provides-Extra: integrations-files
Requires-Dist: Pillow; extra == "integrations-files"
Requires-Dist: pypdf; extra == "integrations-files"
Requires-Dist: openpyxl; extra == "integrations-files"
Requires-Dist: XlsxWriter; extra == "integrations-files"
Requires-Dist: python-docx; extra == "integrations-files"
Requires-Dist: python-pptx; extra == "integrations-files"
Requires-Dist: defusedxml; extra == "integrations-files"
Requires-Dist: filelock; extra == "integrations-files"
Requires-Dist: watchdog; extra == "integrations-files"
Requires-Dist: pathspec; extra == "integrations-files"
Provides-Extra: integrations-http
Requires-Dist: httpx; extra == "integrations-http"
Requires-Dist: aiohttp; extra == "integrations-http"
Requires-Dist: urllib3; extra == "integrations-http"
Requires-Dist: h11; extra == "integrations-http"
Requires-Dist: h2; extra == "integrations-http"
Requires-Dist: httptools; extra == "integrations-http"
Requires-Dist: requests-cache; extra == "integrations-http"
Requires-Dist: requests-toolbelt; extra == "integrations-http"
Requires-Dist: tenacity; extra == "integrations-http"
Requires-Dist: backoff; extra == "integrations-http"
Provides-Extra: integrations-network
Requires-Dist: dnspython; extra == "integrations-network"
Requires-Dist: netaddr; extra == "integrations-network"
Requires-Dist: psutil; extra == "integrations-network"
Requires-Dist: ifaddr; extra == "integrations-network"
Requires-Dist: paramiko; extra == "integrations-network"
Requires-Dist: asyncssh; extra == "integrations-network"
Requires-Dist: fabric; extra == "integrations-network"
Requires-Dist: invoke; extra == "integrations-network"
Requires-Dist: websocket-client; extra == "integrations-network"
Requires-Dist: websockets; extra == "integrations-network"
Provides-Extra: integrations-quality
Requires-Dist: pytest; extra == "integrations-quality"
Requires-Dist: hypothesis; extra == "integrations-quality"
Requires-Dist: coverage; extra == "integrations-quality"
Requires-Dist: mypy; extra == "integrations-quality"
Requires-Dist: pylint; extra == "integrations-quality"
Requires-Dist: flake8; extra == "integrations-quality"
Requires-Dist: black; extra == "integrations-quality"
Requires-Dist: isort; extra == "integrations-quality"
Requires-Dist: autopep8; extra == "integrations-quality"
Requires-Dist: radon; extra == "integrations-quality"
Provides-Extra: integrations-services
Requires-Dist: fastapi; extra == "integrations-services"
Requires-Dist: starlette; extra == "integrations-services"
Requires-Dist: Flask; extra == "integrations-services"
Requires-Dist: Werkzeug; extra == "integrations-services"
Requires-Dist: Django; extra == "integrations-services"
Requires-Dist: uvicorn; extra == "integrations-services"
Requires-Dist: hypercorn; extra == "integrations-services"
Requires-Dist: tornado; extra == "integrations-services"
Requires-Dist: sanic; extra == "integrations-services"
Requires-Dist: falcon; extra == "integrations-services"
Provides-Extra: integrations-utilities
Requires-Dist: packaging; extra == "integrations-utilities"
Requires-Dist: python-dateutil; extra == "integrations-utilities"
Requires-Dist: pendulum; extra == "integrations-utilities"
Requires-Dist: arrow; extra == "integrations-utilities"
Requires-Dist: humanize; extra == "integrations-utilities"
Requires-Dist: cachetools; extra == "integrations-utilities"
Requires-Dist: diskcache; extra == "integrations-utilities"
Requires-Dist: more-itertools; extra == "integrations-utilities"
Requires-Dist: sortedcontainers; extra == "integrations-utilities"
Requires-Dist: boltons; extra == "integrations-utilities"
Provides-Extra: integrations-validation
Requires-Dist: pydantic; extra == "integrations-validation"
Requires-Dist: jsonschema; extra == "integrations-validation"
Requires-Dist: marshmallow; extra == "integrations-validation"
Requires-Dist: attrs; extra == "integrations-validation"
Requires-Dist: cattrs; extra == "integrations-validation"
Requires-Dist: cerberus; extra == "integrations-validation"
Requires-Dist: voluptuous; extra == "integrations-validation"
Requires-Dist: email-validator; extra == "integrations-validation"
Requires-Dist: validators; extra == "integrations-validation"
Requires-Dist: referencing; extra == "integrations-validation"
Provides-Extra: integrations-web
Requires-Dist: lxml; extra == "integrations-web"
Requires-Dist: html5lib; extra == "integrations-web"
Requires-Dist: cssselect; extra == "integrations-web"
Requires-Dist: soupsieve; extra == "integrations-web"
Requires-Dist: selectolax; extra == "integrations-web"
Requires-Dist: bleach; extra == "integrations-web"
Requires-Dist: nh3; extra == "integrations-web"
Requires-Dist: markdown-it-py; extra == "integrations-web"
Requires-Dist: mistune; extra == "integrations-web"
Requires-Dist: Jinja2; extra == "integrations-web"
Provides-Extra: all
Requires-Dist: scapy; extra == "all"
Requires-Dist: python-nmap; extra == "all"
Requires-Dist: requests; extra == "all"
Requires-Dist: beautifulsoup4; extra == "all"
Requires-Dist: pycryptodome>=3.19; extra == "all"
Requires-Dist: yara-python; extra == "all"
Requires-Dist: httpx; extra == "all"
Requires-Dist: aiohttp; extra == "all"
Requires-Dist: urllib3; extra == "all"
Requires-Dist: h11; extra == "all"
Requires-Dist: h2; extra == "all"
Requires-Dist: httptools; extra == "all"
Requires-Dist: requests-cache; extra == "all"
Requires-Dist: requests-toolbelt; extra == "all"
Requires-Dist: tenacity; extra == "all"
Requires-Dist: backoff; extra == "all"
Requires-Dist: lxml; extra == "all"
Requires-Dist: html5lib; extra == "all"
Requires-Dist: cssselect; extra == "all"
Requires-Dist: soupsieve; extra == "all"
Requires-Dist: selectolax; extra == "all"
Requires-Dist: bleach; extra == "all"
Requires-Dist: nh3; extra == "all"
Requires-Dist: markdown-it-py; extra == "all"
Requires-Dist: mistune; extra == "all"
Requires-Dist: Jinja2; extra == "all"
Requires-Dist: pydantic; extra == "all"
Requires-Dist: jsonschema; extra == "all"
Requires-Dist: marshmallow; extra == "all"
Requires-Dist: attrs; extra == "all"
Requires-Dist: cattrs; extra == "all"
Requires-Dist: cerberus; extra == "all"
Requires-Dist: voluptuous; extra == "all"
Requires-Dist: email-validator; extra == "all"
Requires-Dist: validators; extra == "all"
Requires-Dist: referencing; extra == "all"
Requires-Dist: cryptography; extra == "all"
Requires-Dist: bcrypt; extra == "all"
Requires-Dist: argon2-cffi; extra == "all"
Requires-Dist: PyNaCl; extra == "all"
Requires-Dist: PyJWT; extra == "all"
Requires-Dist: itsdangerous; extra == "all"
Requires-Dist: pyOpenSSL; extra == "all"
Requires-Dist: pyotp; extra == "all"
Requires-Dist: keyring; extra == "all"
Requires-Dist: zxcvbn; extra == "all"
Requires-Dist: dnspython; extra == "all"
Requires-Dist: netaddr; extra == "all"
Requires-Dist: psutil; extra == "all"
Requires-Dist: ifaddr; extra == "all"
Requires-Dist: paramiko; extra == "all"
Requires-Dist: asyncssh; extra == "all"
Requires-Dist: fabric; extra == "all"
Requires-Dist: invoke; extra == "all"
Requires-Dist: websocket-client; extra == "all"
Requires-Dist: websockets; extra == "all"
Requires-Dist: numpy; extra == "all"
Requires-Dist: pandas; extra == "all"
Requires-Dist: polars; extra == "all"
Requires-Dist: pyarrow; extra == "all"
Requires-Dist: orjson; extra == "all"
Requires-Dist: ujson; extra == "all"
Requires-Dist: simplejson; extra == "all"
Requires-Dist: msgpack; extra == "all"
Requires-Dist: PyYAML; extra == "all"
Requires-Dist: tomlkit; extra == "all"
Requires-Dist: SQLAlchemy; extra == "all"
Requires-Dist: aiosqlite; extra == "all"
Requires-Dist: asyncpg; extra == "all"
Requires-Dist: psycopg; extra == "all"
Requires-Dist: PyMySQL; extra == "all"
Requires-Dist: redis; extra == "all"
Requires-Dist: pymongo; extra == "all"
Requires-Dist: peewee; extra == "all"
Requires-Dist: sqlparse; extra == "all"
Requires-Dist: duckdb; extra == "all"
Requires-Dist: click; extra == "all"
Requires-Dist: typer; extra == "all"
Requires-Dist: rich; extra == "all"
Requires-Dist: colorama; extra == "all"
Requires-Dist: tqdm; extra == "all"
Requires-Dist: loguru; extra == "all"
Requires-Dist: structlog; extra == "all"
Requires-Dist: python-dotenv; extra == "all"
Requires-Dist: platformdirs; extra == "all"
Requires-Dist: tabulate; extra == "all"
Requires-Dist: Pillow; extra == "all"
Requires-Dist: pypdf; extra == "all"
Requires-Dist: openpyxl; extra == "all"
Requires-Dist: XlsxWriter; extra == "all"
Requires-Dist: python-docx; extra == "all"
Requires-Dist: python-pptx; extra == "all"
Requires-Dist: defusedxml; extra == "all"
Requires-Dist: filelock; extra == "all"
Requires-Dist: watchdog; extra == "all"
Requires-Dist: pathspec; extra == "all"
Requires-Dist: pytest; extra == "all"
Requires-Dist: hypothesis; extra == "all"
Requires-Dist: coverage; extra == "all"
Requires-Dist: mypy; extra == "all"
Requires-Dist: pylint; extra == "all"
Requires-Dist: flake8; extra == "all"
Requires-Dist: black; extra == "all"
Requires-Dist: isort; extra == "all"
Requires-Dist: autopep8; extra == "all"
Requires-Dist: radon; extra == "all"
Requires-Dist: fastapi; extra == "all"
Requires-Dist: starlette; extra == "all"
Requires-Dist: Flask; extra == "all"
Requires-Dist: Werkzeug; extra == "all"
Requires-Dist: Django; extra == "all"
Requires-Dist: uvicorn; extra == "all"
Requires-Dist: hypercorn; extra == "all"
Requires-Dist: tornado; extra == "all"
Requires-Dist: sanic; extra == "all"
Requires-Dist: falcon; extra == "all"
Requires-Dist: packaging; extra == "all"
Requires-Dist: python-dateutil; extra == "all"
Requires-Dist: pendulum; extra == "all"
Requires-Dist: arrow; extra == "all"
Requires-Dist: humanize; extra == "all"
Requires-Dist: cachetools; extra == "all"
Requires-Dist: diskcache; extra == "all"
Requires-Dist: more-itertools; extra == "all"
Requires-Dist: sortedcontainers; extra == "all"
Requires-Dist: boltons; extra == "all"

# Cybersecure Easy 0.4.0

**1,400+ Filetypes** across **10 security verbs**, all using the same
easy-to-remember keyword style:

```python
Cybersecure.Extract(Filetype="Html", Target="https://example.com", Variable="links")
Cybersecure.Hash   (Filetype="Sha256", Target="file.bin")
Cybersecure.Encrypt(Filetype="AesGcm", Target="secret", Password="long passphrase")
Cybersecure.Validate(Filetype="IbanDE", Target="DE89370400440532013000")
Cybersecure.Generate(Filetype="Password32")
Cybersecure.Encode  (Filetype="Rot13", Target="hello")
Cybersecure.Sanitize(Filetype="Sql", Target="'; DROP TABLE users; --")
```

Every verb uses the same trio of keywords — `Filetype=`, `Target=`,
`Variable=` — so you only memorize one pattern. Requires Python 3.10+.

## What's new in 0.4.0

- **1,400+ Filetypes** (up from ~50 in v0.3.0) via data-driven registries.
- **New `FileTypeCount()` method** to get the total at runtime.
- **More hashes**: 125 algorithms (all hashlib + HMAC + PBKDF2 + double-hash
  + BLAKE2 with explicit digest sizes + SHAKE with explicit lengths + 16 CRC
  variants + Fletcher checksums + Keccak + legacy algorithms).
- **More validators**: 556 validators including IBAN for 90+ countries,
  postal codes for 100+ countries, phone formats for 100+ countries, VAT
  for 30+ countries, 15 credit card networks, national ID formats, crypto
  addresses, API key formats, and more.
- **More generators**: 189 generators including password variants, UUID v1-v8,
  NanoId variants, ULID, Snowflake, BIP39 mnemonics (5 word counts × 9
  language variants), RSA/EC key generation, crypto address generation,
  random data in multiple bases, colors, names, timestamps, and more.
- **More encoders/decoders**: 103 encodings including Base16/32/45/58/62/64/85,
  ROT1-ROT25, ROT47, Atbash, Morse, case styles, Punycode, IDNA, compression
  codecs, and more.
- **More extract formats**: 58 file formats including TOML, INI, Env,
  Markdown, LaTeX, BibTeX, RIS, Pickle, MsgPack, BSON, Parquet, Excel, Word,
  PDF, EML, Mbox, ICS, vCard, GeoJSON, KML, GPX, FASTA, GenBank, PDB, MOL,
  SDF, Apache/Nginx/Syslog logs, CEF, and more.
- **More scan types**: 86 scan types including 50+ per-secret-type scans,
  20 port-range presets, 8 dependency-ecosystem audits, and vuln scanners.
- **More sanitizers**: 46 sanitization contexts including HTML, SQL, Shell,
  Path, JavaScript, XML, JSON, YAML, Markdown, LaTeX, LDAP/XPath/NoSQL/
  log injection, SSRF, CSRF, open redirect, and more.
- **More crypto modes**: 75 algorithms including AES in 11 modes (ECB/CBC/
  CTR/CFB/OFB/GCM/CCM/SIV/EAX/OCB/GCM-SIV) × 3 key sizes, Fernet, ChaCha20,
  Salsa20, and more.
- **100% backward compatible** — all v0.2.0 and v0.3.0 helpers still work.

## Filetype breakdown

| Verb | Count | Examples |
|------|-------|----------|
| Extract | 58 | Html, Json, Csv, Xml, Yaml, Toml, Ini, Env, Markdown, Log, Regex |
| Scan | 86 | Yara, Ports, Vulns, Deps, AwsKey, GithubToken, BitcoinAddress, CommonPorts |
| Hash | 125 | Md5, Sha256, Sha3_256, Blake2b256, HmacSha256, Crc32, Adler32, Keccak256 |
| Encrypt | 75 | AesGcm, Aes256Cbc, AesCtr, Fernet, ChaCha20, Salsa20, Aes128Ecb |
| Decrypt | 75 | (mirrors Encrypt) |
| Encode | 103 | Base64, Base58, Hex, Url, Rot13, Morse, SnakeCase, Punycode, Gzip |
| Decode | 91 | (mirrors Encode, minus irreversible case styles) |
| Validate | 556 | Email, IbanDE, PostalUS, PhoneGB, Visa, BitcoinAddress, SsnUS, AadhaarIN |
| Generate | 189 | Password32, UuidV7, Token256, Nanoid, Ulid, Mnemonic24, RsaKey2048 |
| Sanitize | 46 | Html, Sql, Shell, Path, JavaScript, LdapInject, Ssrf, OpenRedirect |
| **Total** | **1,404** | |

## Install

```powershell
python -m pip install cybersecure-easy
```

## Quick start

```python
from cybersecure import Cybersecure, Yes

# Discover all supported filetypes
print(f"Total filetypes: {Cybersecure.FileTypeCount()}")
for verb, fts in Cybersecure.Filetypes().items():
    print(f"  {verb}: {len(fts)} filetypes")

# Extract from HTML
links = Cybersecure.Extract(Filetype="Html", Target="https://example.com", Variable="links")

# Hash with SHA-256
digest = Cybersecure.Hash(Filetype="Sha256", Target="file.bin")

# Encrypt with AES-GCM
blob = Cybersecure.Encrypt(Filetype="AesGcm", Target="secret", Password="long passphrase")
plain = Cybersecure.Decrypt(Filetype="AesGcm", Target=blob, Password="long passphrase")

# Validate a German IBAN
Cybersecure.Validate(Filetype="IbanDE", Target="DE89370400440532013000")  # True

# Generate a 32-char password
pw = Cybersecure.Generate(Filetype="Password32")

# Encode/decode ROT13
encoded = Cybersecure.Encode(Filetype="Rot13", Target="hello")  # "uryyb"
decoded = Cybersecure.Decode(Filetype="Rot13", Target="uryyb")  # "hello"

# Sanitize SQL injection
safe = Cybersecure.Sanitize(Filetype="Sql", Target="'; DROP TABLE users; --")
```

## Backward compatibility

All v0.2.0 and v0.3.0 helpers are still present with the same signatures,
including `Virtual_Frame`, `send_packet`, `scan_ports`, `get_page`,
`Curl_Call`, `extract_links`, `extract_element`, `sha256`, `encrypt_text`,
`decrypt_text`, `scan_file`, `audit`, `audit_dependencies`, `proxies`,
the 120 lazy package adapters, and the `Yes`/`No` readable aliases.
Nothing has been removed or renamed.

## Publish from Windows PowerShell

1. Extract this archive and open the `cybersecure-easy-0.4.0` folder.
2. Check the current live version at https://pypi.org/project/cybersecure-easy/.
   If 0.4.0 is already taken, bump `version` in `pyproject.toml`.
3. Open PowerShell in this folder and run:

```powershell
powershell -ExecutionPolicy Bypass -File .\publish.ps1
```

## Verification

Run `python selftest.py`. It exercises 198 checks covering:
- All v0.3.0 verb API (backward compat)
- The new v0.4.0 expansion (198 checks across all 10 verbs)
- `FileTypeCount() >= 1000` assertion
- Country-specific IBAN/postal/phone/VAT validators
- All hash algorithm families (hashlib, HMAC, PBKDF2, CRC, BLAKE2, SHA3)
- All encoder families (Base-N, ROT, case styles, Morse, compression)
- All generator families (passwords, UUIDs, tokens, NanoId, ULID, mnemonics)
- All sanitizer contexts (HTML, SQL, Shell, Path, injection types)
- AES round-trips in multiple modes (GCM, CBC, CTR, CFB)
