Metadata-Version: 2.4
Name: artinforge
Version: 0.3.1
Summary: Lightweight Python developer utilities
Author: Artin Karimian
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# ArtinForge

Lightweight, dependency-free Python utilities for developer workflows.

**Version:** 0.3.1 · **Python:** 3.9+ · **Runtime dependencies:** none

## Install

```bash
python -m pip install artinforge==0.3.1
```

## Quick start

```python
from artinforge.security import sha256_file
from artinforge.text import normalize_persian
from artinforge.cache import TTLCache

print(normalize_persian("كیفیت"))
print(sha256_file("README.md"))
cache = TTLCache(maxsize=128, ttl=60)
cache.set("answer", 42)
print(cache.get("answer"))
```

## CLI

```bash
artinforge --version
artinforge info
artinforge serve --directory . --host 127.0.0.1 --port 8765
artinforge hash README.md
artinforge json-check data.json
artinforge text-stats README.md
artinforge manifest . --output manifest.json
```

`manifest` writes relative file paths, sizes and SHA-256 digests to JSON. It skips common generated directories (`.git`, `.venv`, `__pycache__`, `build`, `dist`).

## Security notes

- The local static server binds to `127.0.0.1` by default and is intended for development, not direct public-internet exposure.
- HTTP helpers accept only absolute HTTP(S) URLs, reject embedded URL credentials, and limit response bodies by default to 5 MiB. Set `max_bytes` deliberately when a larger response is expected.
- SHA-256 checksums help detect changes; they do not prove who created a file unless the expected digest is trusted.
- Keep dependencies minimal and audit any added dependencies before release. `pip-audit` checks known vulnerabilities in dependency trees but is not a static analyzer for this package's own code.

## Development

```bash
python -m pip install -e .
python -m pip install pytest build twine
python -m pytest -q
python -m build
python -m twine check dist/*
```

MIT License.
