Metadata-Version: 2.4
Name: agri-secure-framework
Version: 1.0.2
Summary: Production-ready cybersecurity framework for agricultural data systems
Home-page: https://github.com/zambia-agri/agri-secure-framework
Author: Mathews Phiri
Author-email: mathewsphirip189@gmail.com
License: MIT
Project-URL: Documentation, https://agri-secure-framework.readthedocs.io
Project-URL: Source, https://github.com/zambia-agri/agri-secure-framework
Project-URL: Tracker, https://github.com/zambia-agri/agri-secure-framework/issues
Project-URL: Changelog, https://github.com/zambia-agri/agri-secure-framework/blob/main/CHANGELOG.md
Keywords: agriculture security encryption cybersecurity zambia nist framework blockchain
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Security
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Database
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Framework :: Django
Classifier: Framework :: Flask
Classifier: Framework :: FastAPI
Requires-Python: >=3.8, <3.14
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cryptography<40.0.0,>=39.0.0
Requires-Dist: pyjwt<3.0.0,>=2.6.0
Requires-Dist: pyotp<3.0.0,>=2.8.0
Requires-Dist: bcrypt<5.0.0,>=4.0.0
Requires-Dist: python-dotenv<2.0.0,>=1.0.0
Requires-Dist: requests<3.0.0,>=2.28.0
Requires-Dist: pydantic<3.0.0,>=2.0.0
Requires-Dist: pydantic-settings>=2.0.0
Requires-Dist: typing-extensions>=4.5.0
Requires-Dist: click<9.0.0,>=8.1.0
Requires-Dist: colorama>=0.4.6
Requires-Dist: rich>=13.0.0
Requires-Dist: pendulum>=2.1.0
Requires-Dist: python-json-logger>=2.0.0
Requires-Dist: prometheus-client>=0.17.0
Requires-Dist: opentelemetry-api>=1.18.0
Requires-Dist: opentelemetry-sdk>=1.18.0
Requires-Dist: opentelemetry-instrumentation>=0.37b0
Requires-Dist: qrcode>=7.4.0
Requires-Dist: pillow>=10.0.0
Requires-Dist: email-validator>=2.0.0
Requires-Dist: phonenumbers>=8.13.0
Requires-Dist: redis>=4.5.0
Requires-Dist: pymongo>=4.3.0
Requires-Dist: sqlalchemy>=2.0.0
Provides-Extra: django
Requires-Dist: Django<5.0,>=3.2; extra == "django"
Provides-Extra: flask
Requires-Dist: Flask<3.0,>=2.0; extra == "flask"
Provides-Extra: fastapi
Requires-Dist: fastapi<1.0,>=0.95; extra == "fastapi"
Requires-Dist: uvicorn[standard]>=0.21; extra == "fastapi"
Provides-Extra: postgres
Requires-Dist: psycopg2-binary>=2.9; extra == "postgres"
Provides-Extra: mysql
Requires-Dist: mysqlclient>=2.1; extra == "mysql"
Provides-Extra: mongodb
Requires-Dist: pymongo>=4.3; extra == "mongodb"
Provides-Extra: redis
Requires-Dist: redis>=4.5; extra == "redis"
Provides-Extra: aws
Requires-Dist: boto3>=1.26; extra == "aws"
Provides-Extra: azure
Requires-Dist: azure-storage-blob>=12.0; extra == "azure"
Provides-Extra: gcp
Requires-Dist: google-cloud-storage>=2.0; extra == "gcp"
Provides-Extra: dev
Requires-Dist: pytest>=7.4.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-mock>=3.11.0; extra == "dev"
Requires-Dist: pytest-xdist>=3.3.0; extra == "dev"
Requires-Dist: pytest-timeout>=2.1.0; extra == "dev"
Requires-Dist: pytest-benchmark>=4.0.0; extra == "dev"
Requires-Dist: black>=23.7.0; extra == "dev"
Requires-Dist: isort>=5.12.0; extra == "dev"
Requires-Dist: flake8>=6.1.0; extra == "dev"
Requires-Dist: mypy>=1.5.0; extra == "dev"
Requires-Dist: pylint>=2.17.0; extra == "dev"
Requires-Dist: pycodestyle>=2.11.0; extra == "dev"
Requires-Dist: pydocstyle>=6.3.0; extra == "dev"
Requires-Dist: bandit>=1.7.5; extra == "dev"
Requires-Dist: safety>=2.3.5; extra == "dev"
Requires-Dist: pre-commit>=3.3.0; extra == "dev"
Requires-Dist: types-requests>=2.31.0; extra == "dev"
Requires-Dist: types-PyYAML>=6.0.12; extra == "dev"
Requires-Dist: types-redis>=4.6.0; extra == "dev"
Requires-Dist: types-python-dateutil>=2.8.19; extra == "dev"
Requires-Dist: sphinx>=7.1.0; extra == "dev"
Requires-Dist: sphinx-rtd-theme>=1.3.0; extra == "dev"
Requires-Dist: sphinx-autodoc-typehints>=1.23; extra == "dev"
Requires-Dist: sphinxcontrib-programoutput>=0.17; extra == "dev"
Requires-Dist: mkdocs>=1.5.0; extra == "dev"
Requires-Dist: mkdocs-material>=9.1.0; extra == "dev"
Requires-Dist: mkdocstrings>=0.22.0; extra == "dev"
Requires-Dist: pydoc>=0.4.0; extra == "dev"
Requires-Dist: build>=0.10.0; extra == "dev"
Requires-Dist: wheel>=0.41.0; extra == "dev"
Requires-Dist: twine>=4.0.0; extra == "dev"
Requires-Dist: setuptools>=68.0.0; extra == "dev"
Requires-Dist: pip>=23.0.0; extra == "dev"
Requires-Dist: psycopg2-binary>=2.9.0; extra == "dev"
Requires-Dist: mysqlclient>=2.2.0; extra == "dev"
Requires-Dist: pymongo>=4.5.0; extra == "dev"
Requires-Dist: redis>=4.6.0; extra == "dev"
Requires-Dist: sqlalchemy>=2.0.0; extra == "dev"
Requires-Dist: alembic>=1.11.0; extra == "dev"
Requires-Dist: django>=4.2.0; extra == "dev"
Requires-Dist: flask>=2.3.0; extra == "dev"
Requires-Dist: fastapi>=0.100.0; extra == "dev"
Requires-Dist: uvicorn>=0.23.0; extra == "dev"
Requires-Dist: httpx>=0.24.0; extra == "dev"
Requires-Dist: requests-mock>=1.11.0; extra == "dev"
Requires-Dist: coverage>=7.3.0; extra == "dev"
Requires-Dist: python-coveralls>=3.0.0; extra == "dev"
Requires-Dist: codecov>=2.1.0; extra == "dev"
Requires-Dist: memory-profiler>=0.61.0; extra == "dev"
Requires-Dist: py-spy>=0.3.14; extra == "dev"
Requires-Dist: debugpy>=1.8.0; extra == "dev"
Requires-Dist: ipython>=8.14.0; extra == "dev"
Requires-Dist: ipdb>=0.13.0; extra == "dev"
Requires-Dist: prometheus-client>=0.17.0; extra == "dev"
Requires-Dist: opentelemetry-api>=1.18.0; extra == "dev"
Requires-Dist: opentelemetry-sdk>=1.18.0; extra == "dev"
Requires-Dist: opentelemetry-instrumentation>=0.41b0; extra == "dev"
Requires-Dist: python-dotenv>=1.0.0; extra == "dev"
Requires-Dist: pyyaml>=6.0.1; extra == "dev"
Requires-Dist: click>=8.1.0; extra == "dev"
Requires-Dist: rich>=13.5.0; extra == "dev"
Requires-Dist: pendulum>=2.1.2; extra == "dev"
Requires-Dist: python-json-logger>=2.0.0; extra == "dev"
Requires-Dist: cryptography>=39.0.0; extra == "dev"
Requires-Dist: pyjwt>=2.8.0; extra == "dev"
Requires-Dist: pyotp>=2.8.0; extra == "dev"
Requires-Dist: bcrypt>=4.0.1; extra == "dev"
Requires-Dist: email-validator>=2.0.0; extra == "dev"
Requires-Dist: phonenumbers>=8.13.0; extra == "dev"
Requires-Dist: qrcode>=7.4.0; extra == "dev"
Requires-Dist: pillow>=10.0.0; extra == "dev"
Requires-Dist: gunicorn>=21.2.0; extra == "dev"
Requires-Dist: waitress>=2.1.2; extra == "dev"
Requires-Dist: celery>=5.3.0; extra == "dev"
Requires-Dist: rq>=1.15.0; extra == "dev"
Requires-Dist: pydantic>=2.3.0; extra == "dev"
Requires-Dist: pydantic-settings>=2.0.0; extra == "dev"
Requires-Dist: marshmallow>=3.20.0; extra == "dev"
Requires-Dist: boto3>=1.28.0; extra == "dev"
Requires-Dist: azure-storage-blob>=12.17.0; extra == "dev"
Requires-Dist: google-cloud-storage>=2.10.0; extra == "dev"
Requires-Dist: vulture>=2.9.0; extra == "dev"
Requires-Dist: pyre-check>=0.9.18; extra == "dev"
Requires-Dist: pyright>=1.1.330; extra == "dev"
Provides-Extra: all
Requires-Dist: Django<5.0,>=3.2; extra == "all"
Requires-Dist: Flask<3.0,>=2.0; extra == "all"
Requires-Dist: fastapi<1.0,>=0.95; extra == "all"
Requires-Dist: uvicorn[standard]>=0.21; extra == "all"
Requires-Dist: psycopg2-binary>=2.9; extra == "all"
Requires-Dist: pymongo>=4.3; extra == "all"
Requires-Dist: redis>=4.5; extra == "all"
Requires-Dist: boto3>=1.26; extra == "all"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: platform
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# 🌾 Agri-Secure Framework

**Production-ready cybersecurity framework for agricultural data systems**

[![PyPI version](https://badge.fury.io/py/agri-secure-framework.svg)](https://badge.fury.io/py/agri-secure-framework)
[![Python Versions](https://img.shields.io/pypi/pyversions/agri-secure-framework.svg)](https://pypi.org/project/agri-secure-framework/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://agri-secure-framework.readthedocs.io)

## 📋 Overview

Agri-Secure is a comprehensive cybersecurity framework designed specifically for agricultural data systems in Zambia and beyond. It provides enterprise-grade security features that developers can integrate with just a few lines of code.

### ✨ Key Features

- **🔐 Military-Grade Encryption** - AES-256-GCM with automatic key rotation
- **👤 Multi-Factor Authentication** - TOTP, SMS, Email, Hardware tokens
- **🛡️ Role-Based Access Control** - Fine-grained permissions for all agricultural roles
- **📝 Blockchain-Inspired Ledger** - Tamper-proof audit trails with Merkle trees
- **🗄️ Multi-Database Support** - PostgreSQL, MySQL, SQLite, MongoDB
- **⚡ High Performance** - Connection pooling, caching (Redis, Memcached)
- **📊 Cloud-Native** - Metrics, tracing, health checks
- **🌍 Zambia-Specific** - NRC validation, districts, provinces, traditional authorities

## 🚀 Quick Start

### Installation

```bash
# Basic installation
pip install agri-secure-framework

# With database support
pip install agri-secure-framework[postgres]  # PostgreSQL
pip install agri-secure-framework[mysql]     # MySQL
pip install agri-secure-framework[mongodb]   # MongoDB

# With web framework support
pip install agri-secure-framework[django]    # Django
pip install agri-secure-framework[flask]     # Flask
pip install agri-secure-framework[fastapi]   # FastAPI

# Full installation
pip install agri-secure-framework[all]
