skuf


Nameskuf JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryMinimal Dependency Injection & Configuration Framework for Python
upload_time2025-07-04 23:10:02
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/bc/83/e0ccd05b471b60b640beb5df3f9af7ed57ce63d08060ee54f43297d8ea5d/skuf-0.2.0.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.0",
    "project_urls": {
        "Homepage": "https://github.com/Tsunami43/skuf.git"
    },
    "split_keywords": [
        "di",
        " dependency-injection",
        " container",
        " python",
        " env"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7efecd513ab7c8d78db8751c6c983578d0dee40069d84385debc73bcd0d154e2",
                "md5": "72674cb39bf06f0ae2a4832541e78fc4",
                "sha256": "b06b84786087b39d16ae64d30258eb3bcfaf2a1a47f9e6b042dfee16a3366201"
            },
            "downloads": -1,
            "filename": "skuf-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "72674cb39bf06f0ae2a4832541e78fc4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 5927,
            "upload_time": "2025-07-04T23:10:00",
            "upload_time_iso_8601": "2025-07-04T23:10:00.889234Z",
            "url": "https://files.pythonhosted.org/packages/7e/fe/cd513ab7c8d78db8751c6c983578d0dee40069d84385debc73bcd0d154e2/skuf-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bc83e0ccd05b471b60b640beb5df3f9af7ed57ce63d08060ee54f43297d8ea5d",
                "md5": "082d1577110c1acb1f76615da8d53358",
                "sha256": "050390705c6ccda6d456bba58e56937ec6d3ec4a3335fca00e0bb20875bde3a6"
            },
            "downloads": -1,
            "filename": "skuf-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "082d1577110c1acb1f76615da8d53358",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 4910,
            "upload_time": "2025-07-04T23:10:02",
            "upload_time_iso_8601": "2025-07-04T23:10:02.384190Z",
            "url": "https://files.pythonhosted.org/packages/bc/83/e0ccd05b471b60b640beb5df3f9af7ed57ce63d08060ee54f43297d8ea5d/skuf-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-04 23:10:02",
    "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.56140s