# RFS Framework π
π **[Documentation](https://interactord.github.io/rfs-framework/)** | [νκ΅μ΄ λ¬Έμ](./docs/)
> **Enterprise-Grade Reactive Functional Serverless Framework for Python**
[](https://www.python.org/downloads/)
[](https://pypi.org/project/rfs-framework/)
[](https://opensource.org/licenses/MIT)
[](https://cloud.google.com/run)
[](https://codecov.io/gh/interactord/rfs-framework)
[](https://github.com/interactord/rfs-framework/actions)
[](https://www.codacy.com/gh/interactord/rfs-framework)
[](https://pypi.org/project/rfs-framework/)
[](https://github.com/interactord/rfs-framework)
[](https://github.com/interactord/rfs-framework/issues)
νλμ μΈ μν°νλΌμ΄μ¦ Python μ ν리μΌμ΄μ
μ μν ν¨μν νλ‘κ·Έλλ° νλ μμν¬μ
λλ€.
## π― Why RFS Framework?
- **νμ
μμ μ±**: Result ν¨ν΄μΌλ‘ μμΈ μλ μλ¬ μ²λ¦¬
- **λ°μν μ€νΈλ¦Ό**: Mono/Flux ν¨ν΄μ λΉλκΈ° μ²λ¦¬
- **ν΄λΌμ°λ λ€μ΄ν°λΈ**: Google Cloud Run μ΅μ ν
- **νλ‘λμ
μ€λΉ**: λͺ¨λν°λ§, 보μ, λ°°ν¬ μ λ΅ λ΄μ₯
## β‘ Quick Start
### Installation
```bash
# PyPIμμ μ€μΉ (v4.0.0 - μμ λ²μ )
pip install rfs-framework
# μ νμ λͺ¨λ μ€μΉ
pip install rfs-framework[web] # FastAPI μΉ νλ μμν¬ (μλ£)
pip install rfs-framework[database] # λ°μ΄ν°λ² μ΄μ€ μ§μ (μλ£)
pip install rfs-framework[test] # ν
μ€ν
λꡬ (μλ£)
pip install rfs-framework[dev] # κ°λ° λꡬ (μλ£)
pip install rfs-framework[docs] # λ¬Έμν λꡬ (TBD)
pip install rfs-framework[ai] # AI/ML ν΅ν© (TBD)
# λͺ¨λ κΈ°λ₯ ν¬ν¨
pip install rfs-framework[all]
# GitHubμμ μ΅μ λ²μ μ€μΉ (v4.3.0)
pip install git+https://github.com/interactord/rfs-framework.git
```
μμΈν μ€μΉ μ΅μ
μ [μ€μΉ κ°μ΄λ](./INSTALLATION.md)λ₯Ό μ°Έμ‘°νμΈμ.
### Basic Example
```python
from rfs import Result, Success, Failure
def divide(a: int, b: int) -> Result[float, str]:
if b == 0:
return Failure("Cannot divide by zero")
return Success(a / b)
# μμ ν μλ¬ μ²λ¦¬
result = divide(10, 2)
if result.is_success:
print(f"Result: {result.unwrap()}") # Result: 5.0
```
### Reactive Streams
```python
from rfs.reactive import Flux
import asyncio
async def process_data():
result = await (
Flux.from_iterable(range(100))
.parallel(4) # 4κ° μ€λ λ λ³λ ¬ μ²λ¦¬
.map(lambda x: x * x)
.filter(lambda x: x % 2 == 0)
.collect_list()
)
return result
```
λ λ§μ μμ λ [Examples Directory](./examples/)λ₯Ό μ°Έμ‘°νμΈμ.
## ποΈ Architecture
```
Application Layer
βββ CLI & Tools β κ°λ°μ λꡬ
βββ Web Framework β FastAPI ν΅ν©
βββ Cloud Services β GCP ν΅ν©
Core Layer
βββ Result Pattern β ν¨μν μλ¬ μ²λ¦¬
βββ Reactive Streams β λΉλκΈ° μ€νΈλ¦Ό
βββ State Machine β μν κ΄λ¦¬
βββ Event Sourcing β CQRS/μ΄λ²€νΈ μ€ν μ΄
Infrastructure Layer
βββ Security β RBAC/ABAC, JWT
βββ Monitoring β λ©νΈλ¦, λ‘κΉ
βββ Deployment β Blue-Green, Canary
βββ Optimization β μ±λ₯ μ΅μ ν
```
## π Documentation
### ν΅μ¬ λ¬Έμ
- **[ν΅μ¬ κ°λ
](./docs/01-core-patterns.md)** - Result ν¨ν΄κ³Ό ν¨μν νλ‘κ·Έλλ°
- **[API Reference](./docs/API_REFERENCE.md)** - μ 체 API λ¬Έμ
- **[μ¬μ©μ κ°μ΄λ](./docs/USER_GUIDE.md)** - λ¨κ³λ³ μ¬μ© μλ΄
### μ£Όμ λ³ κ°μ΄λ
- **[μ€μ κ΄λ¦¬](./docs/03-configuration.md)** - νκ²½λ³ μ€μ
- **[보μ](./docs/11-security.md)** - μΈμ¦, μΈκ°, 보μ κ°ν
- **[λ°°ν¬](./docs/05-deployment.md)** - νλ‘λμ
λ°°ν¬ μ λ΅
- **[CLI λꡬ](./docs/14-cli-interface.md)** - λͺ
λ Ήν μΈν°νμ΄μ€
### μ 체 λ¬Έμ
- **[π Docs (νκ΅μ΄)](./docs/)** - 17κ° λͺ¨λ μμΈ λ¬Έμ
- **[π HOF Library](./docs/22-hot-library.md)** - Higher-Order Functions
- **[λ§μ΄κ·Έλ μ΄μ
κ°μ΄λ](./MIGRATION_GUIDE.md)** - v3μμ v4λ‘ μ
κ·Έλ μ΄λ
## π οΈ Development
### RFS Framework κ·μΉ μ€μ π΄
**νμ**: κ°λ° μ [κ·μΉ λ¬Έμ](./rules/README.md) μμ§ νμ
```bash
# κ·μΉ κ²μ¦ (νμ)
python scripts/validate_rfs_rules.py
# νκΈ μ£Όμ λ° Result ν¨ν΄ μλ κ²μ¦
python scripts/validate_rfs_rules.py --strict
# pre-commit ν
μ€μ (κΆμ₯)
pip install pre-commit
pre-commit install
```
**ν΅μ¬ μ€μ μ¬ν**:
- β
λͺ¨λ μ£Όμμ νκΈλ‘ μμ±
- β
μμΈ λμ Result ν¨ν΄ μ¬μ©
- β
RFS Framework κΈ°λ₯ μ°μ μ¬μ©
- β
λΆλ³μ± μ μ§ (frozen dataclass λ±)
### Commands
```bash
# κ°λ° μλ²
rfs-cli dev --reload
# ν
μ€νΈ
pytest --cov=rfs
# μ½λ νμ§
black src/ && mypy src/
# μμ€ν
μν
rfs status # 16κ° ν΅μ¬ κΈ°λ₯ λͺ¨λν°λ§
```
### Project Structure
```
rfs-framework/
βββ src/rfs/
β βββ core/ # Result ν¨ν΄, DI, μ€μ
β βββ reactive/ # Mono/Flux μ€νΈλ¦Ό
β βββ hof/ # Higher-Order Functions
β βββ production/ # νλ‘λμ
μμ€ν
β βββ cloud_run/ # Cloud Run ν΅ν©
βββ tests/ # ν
μ€νΈ μ€μνΈ
βββ docs/ # νκ΅μ΄ λ¬Έμ
βββ examples/ # μμ μ½λ
```
## β¨ Key Features
### π― ν¨μν νλ‘κ·Έλλ°
- Result/Maybe/Either λͺ¨λλ
- ν¨μ ν©μ±κ³Ό 컀λ§
- λΆλ³μ±κ³Ό μμ ν¨μ
- [μμΈ λ¬Έμ β](./docs/01-core-patterns.md)
### β‘ λ°μν μ€νΈλ¦Ό
- λΉλκΈ° Mono/Flux ν¨ν΄
- λ°±νλ μ
μ§μ
- 30+ μ°μ°μ
- [μμΈ λ¬Έμ β](./docs/README.md#reactive-programming)
### π μν°νλΌμ΄μ¦ 보μ
- RBAC/ABAC μ κ·Ό μ μ΄
- JWT μΈμ¦
- μ·¨μ½μ μ€μΊλ
- [μμΈ λ¬Έμ β](./docs/11-security.md)
### π νλ‘λμ
μ€λΉ
- Blue-Green/Canary λ°°ν¬
- Circuit Breaker ν¨ν΄
- μ±λ₯ λͺ¨λν°λ§
- [μμΈ λ¬Έμ β](./docs/05-deployment.md)
## π Performance
| Metric | Value | Note |
|--------|-------|------|
| **μμ μκ°** | ~50ms | CLI μ΄κΈ°ν |
| **λ©λͺ¨λ¦¬ μ¬μ©** | ~25MB | κΈ°λ³Έ μ€ν |
| **μλ΅ μκ°** | <100ms | API νΈμΆ |
| **μ²λ¦¬λ** | 1200 RPS | λ²€μΉλ§ν¬ |
## π§ Status
- **μμ±λ**: 93% (v4.3.0) - [νμ¬ μ»€λ²λ¦¬μ§ ~10%](https://codecov.io/gh/interactord/rfs-framework)
- **νλ‘λμ
μ€λΉ**: β
Ready
- **λ―Έμμ± νλͺ©**: [TODO.md](./TODO.md) μ°Έμ‘°
## π€ Contributing
κΈ°μ¬λ₯Ό νμν©λλ€! [Contributing Guide](./CONTRIBUTING.md)λ₯Ό μ°Έμ‘°νμΈμ.
```bash
# κ°λ° νκ²½ μ€μ
git clone https://github.com/interactord/rfs-framework
cd rfs-framework
pip install -e ".[dev]"
# κ·μΉ κ²μ¦ λ° μ€μ (νμ)
python scripts/validate_rfs_rules.py
# ν
μ€νΈ μ€ν
pytest
# PR μ μΆ μ μ΅μ’
κ²μ¦
python scripts/validate_rfs_rules.py --strict
git checkout -b feature/your-feature
git commit -m "feat: μλ‘μ΄ κΈ°λ₯ μΆκ°" # νκΈ μ»€λ° λ©μμ§
git push origin feature/your-feature
```
## π License
MIT License - [LICENSE](./LICENSE) μ°Έμ‘°
## π Support
- **λ¬Έμ λ³΄κ³ **: [GitHub Issues](https://github.com/interactord/rfs-framework/issues)
- **ν λ‘ **: [Discussions](https://github.com/interactord/rfs-framework/discussions)
- **λ¬Έμ**: [Wiki](https://github.com/interactord/rfs-framework/wiki)
---
**Made with β€οΈ by the RFS Framework Team**
Raw data
{
"_id": null,
"home_page": null,
"name": "rfs-framework",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "async, async-result, cloud-native, enterprise, fastapi, framework, functional, logging, microservices, monad, optimization, production-ready, reactive, result-pattern, security, serverless, testing, validation, web-integration",
"author": null,
"author_email": "RFS Framework Team <team@rfs-framework.dev>",
"download_url": "https://files.pythonhosted.org/packages/57/ff/1883801c45d169f36e411e713a6b1bedf800e7f9623fc02581d9cff5b157/rfs_framework-4.4.0.tar.gz",
"platform": null,
"description": "# RFS Framework \ud83d\ude80\n\n\ud83d\udcd6 **[Documentation](https://interactord.github.io/rfs-framework/)** | [\ud55c\uad6d\uc5b4 \ubb38\uc11c](./docs/)\n\n> **Enterprise-Grade Reactive Functional Serverless Framework for Python**\n\n[](https://www.python.org/downloads/)\n[](https://pypi.org/project/rfs-framework/)\n[](https://opensource.org/licenses/MIT)\n[](https://cloud.google.com/run)\n[](https://codecov.io/gh/interactord/rfs-framework)\n[](https://github.com/interactord/rfs-framework/actions)\n[](https://www.codacy.com/gh/interactord/rfs-framework)\n[](https://pypi.org/project/rfs-framework/)\n[](https://github.com/interactord/rfs-framework)\n[](https://github.com/interactord/rfs-framework/issues)\n\n\ud604\ub300\uc801\uc778 \uc5d4\ud130\ud504\ub77c\uc774\uc988 Python \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc704\ud55c \ud568\uc218\ud615 \ud504\ub85c\uadf8\ub798\ubc0d \ud504\ub808\uc784\uc6cc\ud06c\uc785\ub2c8\ub2e4.\n\n## \ud83c\udfaf Why RFS Framework?\n\n- **\ud0c0\uc785 \uc548\uc804\uc131**: Result \ud328\ud134\uc73c\ub85c \uc608\uc678 \uc5c6\ub294 \uc5d0\ub7ec \ucc98\ub9ac\n- **\ubc18\uc751\ud615 \uc2a4\ud2b8\ub9bc**: Mono/Flux \ud328\ud134\uc758 \ube44\ub3d9\uae30 \ucc98\ub9ac\n- **\ud074\ub77c\uc6b0\ub4dc \ub124\uc774\ud2f0\ube0c**: Google Cloud Run \ucd5c\uc801\ud654\n- **\ud504\ub85c\ub355\uc158 \uc900\ube44**: \ubaa8\ub2c8\ud130\ub9c1, \ubcf4\uc548, \ubc30\ud3ec \uc804\ub7b5 \ub0b4\uc7a5\n\n## \u26a1 Quick Start\n\n### Installation\n\n```bash\n# PyPI\uc5d0\uc11c \uc124\uce58 (v4.0.0 - \uc548\uc815 \ubc84\uc804)\npip install rfs-framework\n\n# \uc120\ud0dd\uc801 \ubaa8\ub4c8 \uc124\uce58\npip install rfs-framework[web] # FastAPI \uc6f9 \ud504\ub808\uc784\uc6cc\ud06c (\uc644\ub8cc)\npip install rfs-framework[database] # \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc9c0\uc6d0 (\uc644\ub8cc)\npip install rfs-framework[test] # \ud14c\uc2a4\ud305 \ub3c4\uad6c (\uc644\ub8cc)\npip install rfs-framework[dev] # \uac1c\ubc1c \ub3c4\uad6c (\uc644\ub8cc)\npip install rfs-framework[docs] # \ubb38\uc11c\ud654 \ub3c4\uad6c (TBD)\npip install rfs-framework[ai] # AI/ML \ud1b5\ud569 (TBD)\n\n# \ubaa8\ub4e0 \uae30\ub2a5 \ud3ec\ud568\npip install rfs-framework[all]\n\n# GitHub\uc5d0\uc11c \ucd5c\uc2e0 \ubc84\uc804 \uc124\uce58 (v4.3.0)\npip install git+https://github.com/interactord/rfs-framework.git\n```\n\n\uc790\uc138\ud55c \uc124\uce58 \uc635\uc158\uc740 [\uc124\uce58 \uac00\uc774\ub4dc](./INSTALLATION.md)\ub97c \ucc38\uc870\ud558\uc138\uc694.\n\n### Basic Example\n\n```python\nfrom rfs import Result, Success, Failure\n\ndef divide(a: int, b: int) -> Result[float, str]:\n if b == 0:\n return Failure(\"Cannot divide by zero\")\n return Success(a / b)\n\n# \uc548\uc804\ud55c \uc5d0\ub7ec \ucc98\ub9ac\nresult = divide(10, 2)\nif result.is_success:\n print(f\"Result: {result.unwrap()}\") # Result: 5.0\n```\n\n### Reactive Streams\n\n```python\nfrom rfs.reactive import Flux\nimport asyncio\n\nasync def process_data():\n result = await (\n Flux.from_iterable(range(100))\n .parallel(4) # 4\uac1c \uc2a4\ub808\ub4dc \ubcd1\ub82c \ucc98\ub9ac\n .map(lambda x: x * x)\n .filter(lambda x: x % 2 == 0)\n .collect_list()\n )\n return result\n```\n\n\ub354 \ub9ce\uc740 \uc608\uc81c\ub294 [Examples Directory](./examples/)\ub97c \ucc38\uc870\ud558\uc138\uc694.\n\n## \ud83c\udfd7\ufe0f Architecture\n\n```\nApplication Layer\n\u251c\u2500\u2500 CLI & Tools \u2192 \uac1c\ubc1c\uc790 \ub3c4\uad6c\n\u251c\u2500\u2500 Web Framework \u2192 FastAPI \ud1b5\ud569\n\u2514\u2500\u2500 Cloud Services \u2192 GCP \ud1b5\ud569\n\nCore Layer\n\u251c\u2500\u2500 Result Pattern \u2192 \ud568\uc218\ud615 \uc5d0\ub7ec \ucc98\ub9ac\n\u251c\u2500\u2500 Reactive Streams \u2192 \ube44\ub3d9\uae30 \uc2a4\ud2b8\ub9bc\n\u251c\u2500\u2500 State Machine \u2192 \uc0c1\ud0dc \uad00\ub9ac\n\u2514\u2500\u2500 Event Sourcing \u2192 CQRS/\uc774\ubca4\ud2b8 \uc2a4\ud1a0\uc5b4\n\nInfrastructure Layer\n\u251c\u2500\u2500 Security \u2192 RBAC/ABAC, JWT\n\u251c\u2500\u2500 Monitoring \u2192 \uba54\ud2b8\ub9ad, \ub85c\uae45\n\u251c\u2500\u2500 Deployment \u2192 Blue-Green, Canary\n\u2514\u2500\u2500 Optimization \u2192 \uc131\ub2a5 \ucd5c\uc801\ud654\n```\n\n## \ud83d\udcda Documentation\n\n### \ud575\uc2ec \ubb38\uc11c\n- **[\ud575\uc2ec \uac1c\ub150](./docs/01-core-patterns.md)** - Result \ud328\ud134\uacfc \ud568\uc218\ud615 \ud504\ub85c\uadf8\ub798\ubc0d\n- **[API Reference](./docs/API_REFERENCE.md)** - \uc804\uccb4 API \ubb38\uc11c\n- **[\uc0ac\uc6a9\uc790 \uac00\uc774\ub4dc](./docs/USER_GUIDE.md)** - \ub2e8\uacc4\ubcc4 \uc0ac\uc6a9 \uc548\ub0b4\n\n### \uc8fc\uc81c\ubcc4 \uac00\uc774\ub4dc\n- **[\uc124\uc815 \uad00\ub9ac](./docs/03-configuration.md)** - \ud658\uacbd\ubcc4 \uc124\uc815\n- **[\ubcf4\uc548](./docs/11-security.md)** - \uc778\uc99d, \uc778\uac00, \ubcf4\uc548 \uac15\ud654\n- **[\ubc30\ud3ec](./docs/05-deployment.md)** - \ud504\ub85c\ub355\uc158 \ubc30\ud3ec \uc804\ub7b5\n- **[CLI \ub3c4\uad6c](./docs/14-cli-interface.md)** - \uba85\ub839\ud589 \uc778\ud130\ud398\uc774\uc2a4\n\n### \uc804\uccb4 \ubb38\uc11c\n- **[\ud83d\udcd6 Docs (\ud55c\uad6d\uc5b4)](./docs/)** - 17\uac1c \ubaa8\ub4c8 \uc0c1\uc138 \ubb38\uc11c\n- **[\ud83d\udcda HOF Library](./docs/22-hot-library.md)** - Higher-Order Functions\n- **[\ub9c8\uc774\uadf8\ub808\uc774\uc158 \uac00\uc774\ub4dc](./MIGRATION_GUIDE.md)** - v3\uc5d0\uc11c v4\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc\n\n## \ud83d\udee0\ufe0f Development\n\n### RFS Framework \uaddc\uce59 \uc900\uc218 \ud83d\udd34\n\n**\ud544\uc218**: \uac1c\ubc1c \uc804 [\uaddc\uce59 \ubb38\uc11c](./rules/README.md) \uc219\uc9c0 \ud544\uc694\n\n```bash\n# \uaddc\uce59 \uac80\uc99d (\ud544\uc218)\npython scripts/validate_rfs_rules.py\n\n# \ud55c\uae00 \uc8fc\uc11d \ubc0f Result \ud328\ud134 \uc790\ub3d9 \uac80\uc99d\npython scripts/validate_rfs_rules.py --strict\n\n# pre-commit \ud6c5 \uc124\uc815 (\uad8c\uc7a5)\npip install pre-commit\npre-commit install\n```\n\n**\ud575\uc2ec \uc900\uc218 \uc0ac\ud56d**:\n- \u2705 \ubaa8\ub4e0 \uc8fc\uc11d\uc740 \ud55c\uae00\ub85c \uc791\uc131\n- \u2705 \uc608\uc678 \ub300\uc2e0 Result \ud328\ud134 \uc0ac\uc6a9\n- \u2705 RFS Framework \uae30\ub2a5 \uc6b0\uc120 \uc0ac\uc6a9\n- \u2705 \ubd88\ubcc0\uc131 \uc720\uc9c0 (frozen dataclass \ub4f1)\n\n### Commands\n\n```bash\n# \uac1c\ubc1c \uc11c\ubc84\nrfs-cli dev --reload\n\n# \ud14c\uc2a4\ud2b8\npytest --cov=rfs\n\n# \ucf54\ub4dc \ud488\uc9c8\nblack src/ && mypy src/\n\n# \uc2dc\uc2a4\ud15c \uc0c1\ud0dc\nrfs status # 16\uac1c \ud575\uc2ec \uae30\ub2a5 \ubaa8\ub2c8\ud130\ub9c1\n```\n\n### Project Structure\n\n```\nrfs-framework/\n\u251c\u2500\u2500 src/rfs/\n\u2502 \u251c\u2500\u2500 core/ # Result \ud328\ud134, DI, \uc124\uc815\n\u2502 \u251c\u2500\u2500 reactive/ # Mono/Flux \uc2a4\ud2b8\ub9bc\n\u2502 \u251c\u2500\u2500 hof/ # Higher-Order Functions\n\u2502 \u251c\u2500\u2500 production/ # \ud504\ub85c\ub355\uc158 \uc2dc\uc2a4\ud15c\n\u2502 \u2514\u2500\u2500 cloud_run/ # Cloud Run \ud1b5\ud569\n\u251c\u2500\u2500 tests/ # \ud14c\uc2a4\ud2b8 \uc2a4\uc704\ud2b8\n\u251c\u2500\u2500 docs/ # \ud55c\uad6d\uc5b4 \ubb38\uc11c\n\u2514\u2500\u2500 examples/ # \uc608\uc81c \ucf54\ub4dc\n```\n\n## \u2728 Key Features\n\n### \ud83c\udfaf \ud568\uc218\ud615 \ud504\ub85c\uadf8\ub798\ubc0d\n- Result/Maybe/Either \ubaa8\ub098\ub4dc\n- \ud568\uc218 \ud569\uc131\uacfc \ucee4\ub9c1\n- \ubd88\ubcc0\uc131\uacfc \uc21c\uc218 \ud568\uc218\n- [\uc0c1\uc138 \ubb38\uc11c \u2192](./docs/01-core-patterns.md)\n\n### \u26a1 \ubc18\uc751\ud615 \uc2a4\ud2b8\ub9bc\n- \ube44\ub3d9\uae30 Mono/Flux \ud328\ud134\n- \ubc31\ud504\ub808\uc154 \uc9c0\uc6d0\n- 30+ \uc5f0\uc0b0\uc790\n- [\uc0c1\uc138 \ubb38\uc11c \u2192](./docs/README.md#reactive-programming)\n\n### \ud83d\udd12 \uc5d4\ud130\ud504\ub77c\uc774\uc988 \ubcf4\uc548\n- RBAC/ABAC \uc811\uadfc \uc81c\uc5b4\n- JWT \uc778\uc99d\n- \ucde8\uc57d\uc810 \uc2a4\uce90\ub2dd\n- [\uc0c1\uc138 \ubb38\uc11c \u2192](./docs/11-security.md)\n\n### \ud83d\ude80 \ud504\ub85c\ub355\uc158 \uc900\ube44\n- Blue-Green/Canary \ubc30\ud3ec\n- Circuit Breaker \ud328\ud134\n- \uc131\ub2a5 \ubaa8\ub2c8\ud130\ub9c1\n- [\uc0c1\uc138 \ubb38\uc11c \u2192](./docs/05-deployment.md)\n\n## \ud83d\udcca Performance\n\n| Metric | Value | Note |\n|--------|-------|------|\n| **\uc2dc\uc791 \uc2dc\uac04** | ~50ms | CLI \ucd08\uae30\ud654 |\n| **\uba54\ubaa8\ub9ac \uc0ac\uc6a9** | ~25MB | \uae30\ubcf8 \uc2e4\ud589 |\n| **\uc751\ub2f5 \uc2dc\uac04** | <100ms | API \ud638\ucd9c |\n| **\ucc98\ub9ac\ub7c9** | 1200 RPS | \ubca4\uce58\ub9c8\ud06c |\n\n## \ud83d\udea7 Status\n\n- **\uc644\uc131\ub3c4**: 93% (v4.3.0) - [\ud604\uc7ac \ucee4\ubc84\ub9ac\uc9c0 ~10%](https://codecov.io/gh/interactord/rfs-framework)\n- **\ud504\ub85c\ub355\uc158 \uc900\ube44**: \u2705 Ready\n- **\ubbf8\uc644\uc131 \ud56d\ubaa9**: [TODO.md](./TODO.md) \ucc38\uc870\n\n## \ud83e\udd1d Contributing\n\n\uae30\uc5ec\ub97c \ud658\uc601\ud569\ub2c8\ub2e4! [Contributing Guide](./CONTRIBUTING.md)\ub97c \ucc38\uc870\ud558\uc138\uc694.\n\n```bash\n# \uac1c\ubc1c \ud658\uacbd \uc124\uc815\ngit clone https://github.com/interactord/rfs-framework\ncd rfs-framework\npip install -e \".[dev]\"\n\n# \uaddc\uce59 \uac80\uc99d \ubc0f \uc900\uc218 (\ud544\uc218)\npython scripts/validate_rfs_rules.py\n\n# \ud14c\uc2a4\ud2b8 \uc2e4\ud589\npytest\n\n# PR \uc81c\ucd9c \uc804 \ucd5c\uc885 \uac80\uc99d\npython scripts/validate_rfs_rules.py --strict\ngit checkout -b feature/your-feature\ngit commit -m \"feat: \uc0c8\ub85c\uc6b4 \uae30\ub2a5 \ucd94\uac00\" # \ud55c\uae00 \ucee4\ubc0b \uba54\uc2dc\uc9c0\ngit push origin feature/your-feature\n```\n\n## \ud83d\udcc4 License\n\nMIT License - [LICENSE](./LICENSE) \ucc38\uc870\n\n## \ud83c\udd98 Support\n\n- **\ubb38\uc81c \ubcf4\uace0**: [GitHub Issues](https://github.com/interactord/rfs-framework/issues)\n- **\ud1a0\ub860**: [Discussions](https://github.com/interactord/rfs-framework/discussions)\n- **\ubb38\uc11c**: [Wiki](https://github.com/interactord/rfs-framework/wiki)\n\n---\n\n**Made with \u2764\ufe0f by the RFS Framework Team**",
"bugtrack_url": null,
"license": "MIT",
"summary": "Enterprise-Grade Reactive Functional Serverless Framework for Python with AsyncResult Web Integration",
"version": "4.4.0",
"project_urls": {
"Bug Tracker": "https://github.com/interactord/rfs-framework/issues",
"Changelog": "https://github.com/interactord/rfs-framework/blob/main/CHANGELOG.md",
"Documentation": "https://github.com/interactord/rfs-framework#documentation",
"Homepage": "https://github.com/interactord/rfs-framework",
"Repository": "https://github.com/interactord/rfs-framework"
},
"split_keywords": [
"async",
" async-result",
" cloud-native",
" enterprise",
" fastapi",
" framework",
" functional",
" logging",
" microservices",
" monad",
" optimization",
" production-ready",
" reactive",
" result-pattern",
" security",
" serverless",
" testing",
" validation",
" web-integration"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "05133c9c90c33556a7de742cff1844455546bbeb82506c1ebef0471f6bb510e6",
"md5": "abd4e3bcf030b94ff9c2f34922d053c1",
"sha256": "49c87fcba3a8faa4595e63371890f7a57123a5deff5f2e44feef5c124dea9ff2"
},
"downloads": -1,
"filename": "rfs_framework-4.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "abd4e3bcf030b94ff9c2f34922d053c1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 786259,
"upload_time": "2025-08-28T17:38:03",
"upload_time_iso_8601": "2025-08-28T17:38:03.058133Z",
"url": "https://files.pythonhosted.org/packages/05/13/3c9c90c33556a7de742cff1844455546bbeb82506c1ebef0471f6bb510e6/rfs_framework-4.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "57ff1883801c45d169f36e411e713a6b1bedf800e7f9623fc02581d9cff5b157",
"md5": "30cea82aa4003aeeef0d5cf3b50d2698",
"sha256": "7b9e60b9595304c83953d604433b562294533ffbab0815e508c3586c52577849"
},
"downloads": -1,
"filename": "rfs_framework-4.4.0.tar.gz",
"has_sig": false,
"md5_digest": "30cea82aa4003aeeef0d5cf3b50d2698",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 1058154,
"upload_time": "2025-08-28T17:38:05",
"upload_time_iso_8601": "2025-08-28T17:38:05.328462Z",
"url": "https://files.pythonhosted.org/packages/57/ff/1883801c45d169f36e411e713a6b1bedf800e7f9623fc02581d9cff5b157/rfs_framework-4.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-28 17:38:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "interactord",
"github_project": "rfs-framework",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "rfs-framework"
}