skuf


Nameskuf JSON
Version 0.2.1 PyPI version JSON
download
home_pageNone
SummaryMinimal Dependency Injection & Configuration Framework for Python
upload_time2025-07-16 20:33:17
maintainerNone
docs_urlNone
authorMentorSisek
requires_python>=3.7
licenseMIT
keywords di dependency-injection container python env
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Skuf 
![Python](https://img.shields.io/badge/python-3.7%2B-blue?logo=python&logoColor=white)![Version](https://img.shields.io/badge/version-0.2.0-green)

Minimal Dependency Injection & Configuration Framework for Python

## 🚀 Features

- ⚡️ Lightweight and zero-dependency
- 🧩 Simple Dependency Injection container
- 🔐 Type-safe `.env`-based configuration loader (like `pydantic.BaseSettings`)
- 🧱 Suitable for scripts, CLI tools, microservices

## 📦 Installation

```bash
pip install skuf
```

## 🧰 Dependency Injection
```python
from skuf import DIContainer, Dependency

# Define a Logger
class Logger:
    def log(self, msg: str):
        print(msg)


DIContainer.register(Logger) # Register the class

logger = DIContainer.resolve(Logger)

def test_func(logger = Dependency(Logger)):
    logger.log("Hello, World! From a function!")

logger.log("Hello, World!")
test_func()

# Output:
# Hello, World!
# Hello, World! From a function!
```


## ⚙️ Environment Settings
```python
# .env
API_KEY=supersecret
TIMEOUT=5
DEBUG=true
RETRIES=3
ADMINS=123|456

# settings.py
from skuf import BaseSettings
from typing import List

class Settings(BaseSettings):
    api_key: str
    timeout: int
    debug: bool
    retries: int
    admins: List[int]

settings = Settings()

print(settings.api_key)   # supersecret
print(settings.timeout)   # 5
print(settings.debug)     # True
print(settings.admins)    # [123, 456]
```

✅ Supports types:
* str, int, float, bool
* List[str], List[int], List[float] (via pipe-separated values like A|B|C)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "skuf",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "di, dependency-injection, container, python, env",
    "author": "MentorSisek",
    "author_email": "n3m0_22@mail.ru",
    "download_url": "https://files.pythonhosted.org/packages/95/54/d7c4ab6476abf31b3bf0e74aa9c65a56187335e16cd258fc1bc554b6e015/skuf-0.2.1.tar.gz",
    "platform": null,
    "description": "# Skuf \n![Python](https://img.shields.io/badge/python-3.7%2B-blue?logo=python&logoColor=white)![Version](https://img.shields.io/badge/version-0.2.0-green)\n\nMinimal Dependency Injection & Configuration Framework for Python\n\n## \ud83d\ude80 Features\n\n- \u26a1\ufe0f Lightweight and zero-dependency\n- \ud83e\udde9 Simple Dependency Injection container\n- \ud83d\udd10 Type-safe `.env`-based configuration loader (like `pydantic.BaseSettings`)\n- \ud83e\uddf1 Suitable for scripts, CLI tools, microservices\n\n## \ud83d\udce6 Installation\n\n```bash\npip install skuf\n```\n\n## \ud83e\uddf0 Dependency Injection\n```python\nfrom skuf import DIContainer, Dependency\n\n# Define a Logger\nclass Logger:\n    def log(self, msg: str):\n        print(msg)\n\n\nDIContainer.register(Logger) # Register the class\n\nlogger = DIContainer.resolve(Logger)\n\ndef test_func(logger = Dependency(Logger)):\n    logger.log(\"Hello, World! From a function!\")\n\nlogger.log(\"Hello, World!\")\ntest_func()\n\n# Output:\n# Hello, World!\n# Hello, World! From a function!\n```\n\n\n## \u2699\ufe0f Environment Settings\n```python\n# .env\nAPI_KEY=supersecret\nTIMEOUT=5\nDEBUG=true\nRETRIES=3\nADMINS=123|456\n\n# settings.py\nfrom skuf import BaseSettings\nfrom typing import List\n\nclass Settings(BaseSettings):\n    api_key: str\n    timeout: int\n    debug: bool\n    retries: int\n    admins: List[int]\n\nsettings = Settings()\n\nprint(settings.api_key)   # supersecret\nprint(settings.timeout)   # 5\nprint(settings.debug)     # True\nprint(settings.admins)    # [123, 456]\n```\n\n\u2705 Supports types:\n* str, int, float, bool\n* List[str], List[int], List[float] (via pipe-separated values like A|B|C)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Minimal Dependency Injection & Configuration Framework for Python",
    "version": "0.2.1",
    "project_urls": {
        "Homepage": "https://github.com/Tsunami43/skuf.git"
    },
    "split_keywords": [
        "di",
        " dependency-injection",
        " container",
        " python",
        " env"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "15663f0ae979335bf81acbf78e774ccaec9b2a768472daf485762df19d81adeb",
                "md5": "83e1f3648a4d30f4d2c21cec4bd6c992",
                "sha256": "508f95099b5ad71279cccae3813cf4a2d204e4fb626c670daa4e82e076259783"
            },
            "downloads": -1,
            "filename": "skuf-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "83e1f3648a4d30f4d2c21cec4bd6c992",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 5943,
            "upload_time": "2025-07-16T20:33:15",
            "upload_time_iso_8601": "2025-07-16T20:33:15.514248Z",
            "url": "https://files.pythonhosted.org/packages/15/66/3f0ae979335bf81acbf78e774ccaec9b2a768472daf485762df19d81adeb/skuf-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9554d7c4ab6476abf31b3bf0e74aa9c65a56187335e16cd258fc1bc554b6e015",
                "md5": "7fcbb4e8874019110f7cd95bd096063b",
                "sha256": "c218535e770ea6390d10321db6359a504b03289af43cefb4076322493d5a238d"
            },
            "downloads": -1,
            "filename": "skuf-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "7fcbb4e8874019110f7cd95bd096063b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 4931,
            "upload_time": "2025-07-16T20:33:17",
            "upload_time_iso_8601": "2025-07-16T20:33:17.289340Z",
            "url": "https://files.pythonhosted.org/packages/95/54/d7c4ab6476abf31b3bf0e74aa9c65a56187335e16cd258fc1bc554b6e015/skuf-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-16 20:33:17",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Tsunami43",
    "github_project": "skuf",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "skuf"
}
        
Elapsed time: 0.53696s