Metadata-Version: 2.4
Name: cybersecure-easy
Version: 0.3.1
Summary: 275 easy helpers with your own simple parameters: Cybersecure.Subdomains(URL='example.com').
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Security
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# Cybersecure Easy 0.3.0

**275 implemented features. Your own simple parameters. Zero third-party runtime dependencies.**

## Start in 3 steps

1. Extract this ZIP.
2. Open a terminal in `cybersecure-easy-0.3.0` and run `python -m pip install .`.
3. Put this in a Python file and run it:

```python
from cybersecure import Cybersecure, Yes

print(Cybersecure.Hash_SHA256(Text="hello"))
print(Cybersecure.URL_Host(URL="youtube.com"))
print(Cybersecure.Subdomains(URL="youtube.com"))
frame = Cybersecure.Virtual_Frame(URL="https://example.com", Interactive=Yes)
Cybersecure.Write_Text(File="frame.html", Text=frame.document())
```

If frame.html already exists, add `Overwrite=True` to replace it.
Requires Python 3.10 or newer. No modules are automatically installed at runtime.

## Your syntax

`Cybersecure.Feature(Name=value)` calls YOUR parameter names. These are explicit methods,
not a dispatcher passing arbitrary keywords into other packages. Parameters are case-sensitive.
`URL` accepts a full HTTP(S) URL or a bare hostname (bare names default to HTTPS).

Python itself requires `=`. `Cybersecure.Subdomains(URL:"youtube.com")` is invalid Python.
If you prefer a colon, use the optional text command:

```python
Cybersecure.Run('Subdomains(URL:"youtube.com")')
Cybersecure.Run('Virtual_Frame(URL:"https://example.com", Interactive:Yes)')
```

Run accepts named literal values only; it does not run Python expressions, imports or shell commands.
Boolean words: Yes, No, true, false, True, False. Null values: null, None.

## What is built here

The feature methods, input handling, result structures, candidate subdomain logic,
HTML parsing, documentation, and command parser are implemented in this source.
Python's standard library supplies DNS, HTTP, filesystem, serialization and cryptographic primitives.
This is not an independent Python interpreter, DNS resolver, TLS stack, or cryptography library.
We do not invent encryption algorithms. No third-party package adapters are counted as features.
Some convenience features overlap intentionally (JSON_Valid and Valid_JSON).

## Feature groups

| Group | Features |
| --- | ---: |
| Text | 68 |
| URL | 22 |
| IP | 27 |
| Files | 33 |
| Security | 30 |
| Data | 36 |
| Validation | 20 |
| Dates | 12 |
| HTML | 14 |
| Network | 13 |
| **Total** | **275** |

Read `FEATURES.md` for every signature and easy example. `examples.py` works offline.
`network_examples.py` is optional and uses the network. `python selftest.py` runs tests offline.

## Results and limits

- Most functions return ordinary strings, lists, dictionaries, numbers or booleans.
- Invalid inputs raise Python exceptions; no fake success values. File writes return the output path.
- Subdomains checks default prefixes www, mail, api, blog, dev, test, staging, cdn, static, shop,
  support, docs, m, status, portal. Customize with `Names=["www", "api"]` (maximum 100).
  It returns only candidates that DNS resolves, with their addresses. It is not exhaustive.
  Wildcard DNS and shared hosting can produce misleading matches; no ownership claim is made.
  DNS uses the operating system resolver and can take time; there is no portable per-query timeout.
- HTTP follows redirects using Python's HTTP client, validates HTTPS through default TLS settings,
  enforces a byte limit, and raises on a too-large body. HTTP error statuses are returned as results.
  Timeout is a socket-operation timeout, not a total deadline. Host applications must apply their own
  destination allowlist before offering URL features to untrusted users (including redirect targets).
- HTML functions parse supplied HTML, not JavaScript-rendered browser pages. HTML_Text is not a sanitizer.
- Iframes honor the destination's embedding restrictions. Creating HTML does not open a browser.
- Password_Info is only a composition report. Base64/hex/ROT13 are not encryption.
- JWT_Read never verifies signatures, authorization, or authenticity. MD5/SHA1/CRC32 are legacy checksums.
- Network/address classifications follow the installed Python version.
- File operations may load entire input files except streaming file hashes and copies. Use trusted input sizes.
- Regex operations use Python's regex engine with no execution deadline. Do not accept untrusted patterns.

## Upgrade from 0.2.0

This release deliberately replaces the old generic optional-package wrappers.
Calls such as `Cybersecure.httpx(...)`, `Cybersecure.package(...)` and old lowercase helper names
are removed. Do not use this as a drop-in upgrade of existing scripts; use `MIGRATION.md`.
Virtual_Frame and its document() method remain available. The reported PathPath typo is absent.

## Publish your update

Run `python publish.py` to test, build, check metadata and upload to PyPI.
The script asks whether to upload. It reads your token from TWINE_PASSWORD or prompts privately;
no token is stored in the source. You must own the existing PyPI project, and 0.3.0 must be unused.
For an already-published version, change the version in pyproject.toml AND cybersecure.py first.
The ZIP contains built wheel and source archive as well as full editable source.
