Metadata-Version: 2.4
Name: sjaandi-kista
Version: 0.8.3
Summary: Reusable Python modules for file operations, HTTP identity, path safety, and platform detection
Author-email: shakeyourbunny <kista-project@trinity2k.net>
License-Expression: GPL-3.0-or-later
Project-URL: Homepage, https://github.com/shakeyourbunny/sjaandi-kista
Project-URL: Repository, https://github.com/shakeyourbunny/sjaandi-kista
Project-URL: Issues, https://github.com/shakeyourbunny/sjaandi-kista/issues
Project-URL: Changelog, https://github.com/shakeyourbunny/sjaandi-kista/blob/main/CHANGELOG.md
Keywords: filesystem,http,user-agent,sanitize,path-safety,platform
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: System :: Filesystems
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: THIRD_PARTY_LICENSES.txt
Requires-Dist: requests
Requires-Dist: pathvalidate
Requires-Dist: brotli
Requires-Dist: platformdirs
Provides-Extra: cache
Requires-Dist: requests-cache; extra == "cache"
Provides-Extra: slugify
Requires-Dist: unidecode; extra == "slugify"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: bandit; extra == "dev"
Requires-Dist: requests-cache; extra == "dev"
Dynamic: license-file

<!-- This file is part of the kista Project.
     License: GPL-3.0-or-later. Contact: kista-project@trinity2k.net -->

# kista

Reusable Python modules for file operations, HTTP identity, path
safety, and platform detection. Small, well-scoped building blocks
so the same user agent handling, sanitizing and file routines stop
getting rewritten per project.

Kista is Icelandic for chest - verkfaerakista is the toolchest.

## Modules

- `kista.http` - HTTP request identity: consistent header profiles
  (an honest tool profile and a complete browser ensemble), never
  random user agents. The browser profile reaches hosts that block
  generic user agents; the tool profile identifies the caller by
  name and version.
- `kista.sanitize` - filename and path component sanitizing.
- `kista.fileops` - atomic writes and timestamp-preserving copy/move.
- `kista.paths` - containment guard (`resolve_within`) and archive
  entry normalization for hostile input.
- `kista.testing` - hostile-input corpora for test parametrization.
- `kista.netfilter` - junk host/path filtering (ads, trackers, crash
  reporters) with bundled pattern lists and whitelist.
- `kista.hashing` - streaming file digests.
- `kista.fmt` - human-readable formatting (byte sizes).
- `kista.platforminfo` - Linux distro detection with derivative
  mapping via ID_LIKE.
- `kista.urls` - scraped-URL normalization.
- `kista.dt` - timezone-aware UTC helpers.
- `kista.arch` - AppImage architecture detection from filenames.
- `kista.checkreqs` - system dependency checker from TOML manifests.

## Install

From PyPI:

    pip install sjaandi-kista

From source:

    pip install .

The import name is `kista`:

```python
from kista.sanitize import sanitize_filename
from kista.http import browser_profile, session_for
```

## License

GPL-3.0-or-later. See LICENSE for the full text and
THIRD_PARTY_LICENSES.txt for dependencies. Product number SJ-PKG-0020.

---
kista has been written with the help of tooled assistance, but has been
designed, reviewed and thoroughly tested and signed off by its developer.
