No project description provided
Project description
Clean Architecture
This project is described a clean architecture written by Robert C. Martine. Architecture is fellow a clean architecture
Table of contents
DirectoryStructure
|-- clean_architecture
| |-- domain
| | |-request_object.py
| | |-response_object.py
| | `-use_case.py
| |-- entity
| | `-entity.py
| |-- exception
| | |-exception.py
| | `- *_exception.py
| |-- serializer
| `-serializer.py
Installation
pip install clean-architecture
Example
- Entity
from clean_architecture.entity import Entity
class UserEntity(Entity):
def __init__(
self,
user_id,
name,
created_at,
updated_at
):
self.id = user_id
self.name = name
self.created_at = created_at
self.updated_at = updated_at
@classmethod
def from_dict(cls, adict):
user = UserEntity(
user_id=adict.get("id"),
name=adict.get("name"),
created_at=adict.get("created_at"),
updated_at=adict.get("updated_at")
)
return user
-
Domain
- ValidRequestObject
from clean_architecture.domain import ( ValidRequestObject, InvalidRequestObject, UseCase, ResponseSuccess ) class CreateUserRequestObject(ValidRequestObject): def __init__(self, user): self.user = user if invalid_req.has_errors(): return invalid_req return CreateUserRequestObject( user=UserEntity.from_dict(adict) )
- UseCase
class CreatedUser(UseCase): def __init__(self, user_repository): self.user_repository = user_repository def process_request(self, request_object): user = self.user_repository.create(user=request_object.user) return ResponseSuccess(201, user)
-
Serializer
from schema import Schema
from clean_architecture.serializer import Serializer
class CreateUserEncoder(Serializer):
schema = Schema(
{
"name": str
},
ignore_extra_keys=True
)
Testing
$ pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for clean_architecture-0.0.3-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8567774d3953c2aa06ebf0651607b6a41b5a13b92e2a3db77860ae983b1a10b9 |
|
MD5 | c78da59d22754056cb74ed75bf80bb0e |
|
BLAKE2b-256 | e9972db7c48855ab2bb3a52d056cd546e71593f18f0206a925427745d9e617ef |