Protean Application Framework
Project description
Protean helps you build software on architecture stacks that need to survive in the ever changing technology landscape.
Installation
pip install protean
Documentation
Online docs are available at: https://protean.readthedocs.io/en/latest/
How to Contribute
Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.
Fork [the repository](https://github.com/proteanhq/protean) on GitHub to start making your changes to the master branch (or branch off of it).
Write a test which shows that the bug was fixed or that the feature works as expected.
Send a pull request and bug the maintainer until it gets merged and published. :) Make sure to add yourself to [AUTHORS](https://github.com/proteanhq/protean/blob/master/AUTHORS.rst).
On shoulders of giants…
Protean is not built in a vacuum. Principles and philosophies that Protean espouses are contributions from multiple sources, especially the Open Source Community. It not only refers to well-published architectural ideas and design patterns but also heavily draws inspiration from concrete implementations.
Specifically, Protean is majorly influenced by the venerable Django Framework, and that reflects in many aspects of its underlying constructs and documentation. Thank you, Django, and the Python community, for showing what’s possible.
Release History
0.3.1 (2019-10-15)
Auto Traverse Domain Modules and load elements
0.3 (2019-10-09)
Add a defaults method as part of Container objects when assigned defaults in one field based on another
Add support for Command Handlers
Avoid raising ValidationError when loading data from data stores
Add support for Elasticsearch as a repository
Add support for using Redis as a broker with RQ background workers
0.2 ((2019-09-16)
New Request Object elements introduced to package information from API/views
A base Container class introduced for all Protean data objects for uniformity in behavior
Support for specifying Data Type of auto-generated Identities (String, Integer or UUID)
Enhancements and fixes for Unit of Work functionality to work well with SQLAlchemy type database plugins
Unit of Work transactions now control event publishing and release events to the stream only on a successful commit
A Simplified element registration process to the domain
Validation bugfixes in Aggregates, Entities and Value Objects
Fully functional and configurable logs throughout Protean codebase
Test case restructuring for clarity and isolation of configurations
0.1 (2019-07-25)
Full revamp of Protean codebase to adhere to DDD principles
Add Domain Composition root, with support for the definition of multiple domains in a project
Support for Domain Layer elements: Aggregates, Entities, Value Objects, Domain Services, and Domain Events
Support for Application Layer elements: Application Services, Data Transfer Objects, Repositories, Subscribers and Serializers
Support annotations to register elements with Domain
Complete revamping of Repository layer, and introduction of an underlying DAO layer
Add Unit of Work capabilities to support ACID transactions
Collapse SQLAlchemy and Flask implementations in Protean itself temporarily, until API stabilizes
Rename success flag on Response to is_successful
Rename message attribute in Response object to errors with a uniform structure in all error cases
0.0.11 (2019-04-23)
Rename Repository abstract methods to be public (Ex. _create_object → create)
Add delete_all() method to Entity to support Repository cleanup
Add support for raw queries on Entity repositories
Remove requirement for explicit Model definitions for Entities
Move Model options into Entity Meta class
Support for pre_save and post_save entity callbacks
Replace Pagination with ResultSet because it is at Entity and Use Case level
Replace page and per_page with limit and offset
Add Command utility to generate Protean project template
Provide command line utilities for –version and test
Bugfix: Handled quotes and escape properly in string values in Dictionary repository
Add documentation for Overriding Entity Lifecycle methods
Add ability to mark tests as slow and run slow tests in travis
0.0.10 (2019-04-05)
Support for chained update and delete methods on Queryset
Support for update_all method for mass updates on objects
Support for delete_all method for mass deletion of objects
Rename databases configuration key in Config file from REPOSITORIES to DATABASES
Fully expand the Provider class in configuration file, to avoid assuming a Provider class name
Split Adapter class into Provider and Repository, separating the concern of managing the database connection from performing CRUD operations on Entity data
Expose configured databases as providers global variable
Allow fetching new connection on demand of a new repository object via get_connection in providers
Rename Lookup class to BaseLookup
Associate Lookups with Concrete Provider classes
Provide option to fully bake a model class in case it needs to be decorated for a specific database, via the get_model method in concrete Provider class
Add support for Entity Namespacing
Refactor Repository Factory for better consistency of registry
0.0.9 (2019-03-08)
Minor fixes for issues found while migrating SQLAlchemy plugin to 0.0.8 version
delete method should query by value of id_field instead of hardcoded id
0.0.8 (2019-02-27)
Introduction of find_by() method for Entities
Introduction of save() method for Entities
Support for Query Operators (>, >=, <, <=)
Support for Conjunction Operators (AND, OR) in queries
Change Fields to be full-fledged Descriptors to control getting/setting values
Introduction of Support for References and Associations (HasOne and HasMany)
Remove Pylint from static code analysis and use Flake8
0.0.7 (2019-01-16)
Rename Repository to Adapter
Rename Schema to Model
Enhance Entity class to perform CRUD methods instead of relying on a separate Repo Factory
0.0.6 (2018-12-14)
Repository rewritten from the ground up
First base version for overall Protean functionality
0.0.5 (2018-07-21)
Add Context Class
0.0.4 (2018-07-20)
Add UseCase Utility Classes
Add Repository Abstract Classes
0.0.3 (2018-07-20)
Add bleach as a setup requirement
Add GeoPoint and Decimal Data Types to Entities
0.0.2 (2018-07-19)
Entity Base Class
0.0.1 (2018-07-15)
First release on PyPI.
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
Hashes for protean-0.3.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e61f2774cdc8f91328e479b827e3241fd8bea5f653324136a6ab9a4703f8af9 |
|
MD5 | cd72f47d1686e645f80c02ba45cd675c |
|
BLAKE2b-256 | a9afbe20ee666cde010853d0c4f0e7a48b09eb379a75f6b2c304cc288b4468de |