The easiest way to make your code simple to reason about.
dry-python is a collection of libraries aimed to help you to build an application in your domain.
You can define business logic processes with clear DSL.
>>> from stories import story, arguments
>>> class BuySubscription:
... @story
... @arguments("price_id", "user")
... def buy(I):
... I.find_price
... I.check_balance
... I.persist_payment
... I.persist_subscription
... I.send_subscription_notification
... I.show_category
You can integrate it into frameworks you already use.
>>> from dependencies import Injector, operation, this
>>> from dependencies.contrib.django import view
>>> from django.http import HttpResponse
>>> from django.shortcuts import redirect
>>> @view
... class BuySubscriptionView(Injector):
... buy_subscription = workflows.BuySubscription.buy
... price_id = this.kwargs["id"]
...
... @operation
... def post(buy_subscription, price_id, user):
... result = buy_subscription.run(price_id, user)
... if result.is_success:
... return redirect(result.value)
... elif result.failed_on("check_balance"):
... return HttpResponse("<h1>Error: not enough money</h1>")
And a framework of your choice will not even notice the change.
>>> from app.views import BuySubscriptionView
>>> urlpatterns = [
... path("buy_subscription/<int:id>/", BuySubscriptionView.as_view()),
... ]
— ⭐️ —
Drylabs maintains dry-python and helps those who want to use it inside their organizations.
Read more at drylabs.io
