Recent Releases of protean
protean - v0.14.0
What's Changed
- Subscription enhancements and robustness
- Rename
modeltodatabase_modelandviewtoprojection - Introduce
projectordomain element to update projections - Introduce built-in FastAPI server for monitoring/dashboard
- Improve sync/async message propagation and processing
- Server enhancements and robustness
- Introduce Outbox Pattern (Preliminary release)
- Support Microsoft SQL Server as database
Details
- Accept optional config during Domain initialization by @subhashb in https://github.com/proteanhq/protean/pull/466
- Unify subscription implementation by @subhashb in https://github.com/proteanhq/protean/pull/467
- Explicitly control query result limits by @subhashb in https://github.com/proteanhq/protean/pull/468
- Allow SQLAlchemy config in connection info to pass through to Engine creation by @subhashb in https://github.com/proteanhq/protean/pull/469
- Rename
modeltodatabase_modelby @subhashb in https://github.com/proteanhq/protean/pull/470 - Avoid double-processing synchronous messages by @subhashb in https://github.com/proteanhq/protean/pull/471
- Add in-built FastAPI server by @subhashb in https://github.com/proteanhq/protean/pull/507
- Auto discover Domain.root_path by @subhashb in https://github.com/proteanhq/protean/pull/519
- Fix #513 CI workflow and update dependencies version for python 3.13 support by @Ayush3941 in https://github.com/proteanhq/protean/pull/531
- Add new test category for coverage reporting by @subhashb in https://github.com/proteanhq/protean/pull/535
- Command handlers can optionally return value by @subhashb in https://github.com/proteanhq/protean/pull/536
- Keep server running by gracefully logging exceptions by @subhashb in https://github.com/proteanhq/protean/pull/537
- Rename View to Projection by @subhashb in https://github.com/proteanhq/protean/pull/541
- Improve async loop use and signal handling in Engine by @subhashb in https://github.com/proteanhq/protean/pull/587
- Avoid recursive poll() spawning by @subhashb in https://github.com/proteanhq/protean/pull/588
- Outbox pattern implementation by @subhashb in https://github.com/proteanhq/protean/pull/593
- Outbox Pattern Enhancements by @subhashb in https://github.com/proteanhq/protean/pull/595
- Add support for Microsoft SQL Server by @subhashb in https://github.com/proteanhq/protean/pull/599
New Contributors
- @Ayush3941 made their first contribution in https://github.com/proteanhq/protean/pull/531
Full Changelog: https://github.com/proteanhq/protean/compare/v0.13.0...v0.14.0
- Python
Published by subhashb 6 months ago
protean - v0.13.0
What's Changed
- Event and Event Sourcing Enhancements by @subhashb in https://github.com/proteanhq/protean/pull/439
- Stream Enhancements by @subhashb in https://github.com/proteanhq/protean/pull/441
- Check for database provider access on Domain initialization by @subhashb in https://github.com/proteanhq/protean/pull/443
- Event stream handling enhancements by @subhashb in https://github.com/proteanhq/protean/pull/445
- Assimilate Event Sourcing functionality into regular aggregates by @subhashb in https://github.com/proteanhq/protean/pull/447
- Support config for multiple environments by @subhashb in https://github.com/proteanhq/protean/pull/448
- Clean up Exception structures by @subhashb in https://github.com/proteanhq/protean/pull/449
- Simplify Broker and Subscriber functionality by @subhashb in https://github.com/proteanhq/protean/pull/450
- Run subscribers within Engine by @subhashb in https://github.com/proteanhq/protean/pull/451
- Introduce
Field.clonemethod by @subhashb in https://github.com/proteanhq/protean/pull/452 - Initialize domain before starting engine by @subhashb in https://github.com/proteanhq/protean/pull/453
- Refactor
Optionsto subclassdictby @subhashb in https://github.com/proteanhq/protean/pull/456 - Application Service Enhancements by @subhashb in https://github.com/proteanhq/protean/pull/457
- Sync event version during event fetch in DAO by @subhashb in https://github.com/proteanhq/protean/pull/462
Full Changelog: https://github.com/proteanhq/protean/compare/v0.12.1...v0.13.0
- Python
Published by subhashb 12 months ago
protean - v0.12.1
What's Changed
- Make constants under
[custom]section available directly on the domain - Simplify domain traversal logic and improve performance
- Optimize fetching handlers for domain events
- Remove clone method from Entity/Aggregate
- Remove
provider` meta option from Entities
- Python
Published by subhashb over 1 year ago
protean - v0.12.0
What's Changed
- Switch from Copier to Typer by @subhashb in https://github.com/proteanhq/protean/pull/400
- CLI commands refactoring by @subhashb in https://github.com/proteanhq/protean/pull/401
- Add
shellcommand to Protean CLI by @subhashb in https://github.com/proteanhq/protean/pull/402 - Refactor CLI commands and add documentation by @subhashb in https://github.com/proteanhq/protean/pull/403
- Clean up docs dependencies and retain just
mkdocs-materialby @subhashb in https://github.com/proteanhq/protean/pull/405 - Async server bug fixes and general enhancements by @subhashb in https://github.com/proteanhq/protean/pull/406
- Replace flake8 + black + isort with
ruffby @subhashb in https://github.com/proteanhq/protean/pull/411 - Enhance support for different identity types in
Identifierfield by @subhashb in https://github.com/proteanhq/protean/pull/414 - 415 Entity Association Enhancements by @subhashb in https://github.com/proteanhq/protean/pull/416
- Add Fields related documentation by @subhashb in https://github.com/proteanhq/protean/pull/417
- Bugfix to ensure associations can only link to other entities by @subhashb in https://github.com/proteanhq/protean/pull/418
- Resolve references when initializing Domain by @subhashb in https://github.com/proteanhq/protean/pull/419
- Support nesting associations under entities by @subhashb in https://github.com/proteanhq/protean/pull/423
- Add @invariant decorator to explicitly configure invariants by @subhashb in https://github.com/proteanhq/protean/pull/425
- Add documentation related to defining Domain Behaviors by @subhashb in https://github.com/proteanhq/protean/pull/426
- (409) Transition Protean Config to .toml file by @subhashb in https://github.com/proteanhq/protean/pull/427
- Support
Listof Value Objects by @subhashb in https://github.com/proteanhq/protean/pull/429 - 428 Domain Service Enhancements by @subhashb in https://github.com/proteanhq/protean/pull/430
- Upgrade SQLAlchemy to 2.0.x by @subhashb in https://github.com/proteanhq/protean/pull/431
- Explicitly control automatic addition of identity field by @subhashb in https://github.com/proteanhq/protean/pull/432
- Remove support for inner
Metaclass by @subhashb in https://github.com/proteanhq/protean/pull/433 - Revamp BaseModel for parity with other domain elements by @subhashb in https://github.com/proteanhq/protean/pull/434
- Enable VSCode Testing to scan tests successfully by @subhashb in https://github.com/proteanhq/protean/pull/435
- Add
message-dbservice to GitHub CI Actions by @subhashb in https://github.com/proteanhq/protean/pull/436 - Identity enhancements by @subhashb in https://github.com/proteanhq/protean/pull/437
Full Changelog: https://github.com/proteanhq/protean/compare/v0.11.0...v0.12.0
- Python
Published by subhashb over 1 year ago
protean - v0.11.0
What's Changed
- Add support for Python 3.12.0
- Move to poetry
- Control domain directory traversal explicitly in
init() - Domain Traversal Refactoring
- ReadTheDocs config enhancements
Full Changelog: https://github.com/proteanhq/protean/compare/v0.10.0...v0.11.0
- Python
Published by subhashb almost 2 years ago
protean - v0.9.0
- Output VO values as nested dicts instead of a forced flat structure
- Enclose DAOs within repositories to encourage DB interaction solely through repos
- Remove
removemethod from repository to discourage hard deletes - Manage concurrency with Aggregate versions
- Add MessageDB Event store adapter
- Add stand-in Memory Event store
- Introduce EventSourced Aggregates and Event Handlers
- Introduce EventSourced Repositories
- Allow filtering of messages from their origin stream
- Allow Event Handlers to listen to other streams and ALL streams
- Allow Command Handler methods to handle any event
- Wrap EventHandler and CommandHandler methods execute within UnitOfWork
- Associate Commands and Events with streams (explicit and via Aggregates)
- Support processing events and commands in synchronous mode.
- Allow asynchronous command processing by submitting commands to domain
- Add
autoflaketopre-commit - Treat empty string value as None in Date and DateTime Fields
- Support inter-attribute dependencies in Option defaults
- Cache registry, repositories, daos, and models with
@cache - Fix sorting issue with null values in Memory DB
- Add
anyfilter and allow scalar values toinoperator in Memory DB
- Python
Published by subhashb about 4 years ago
protean - v0.8.0
- Move
fieldsmodule to be under main package - Allow
Listfields to containDictobjects - Elasticsearch adapter bugfixes and model enhancements
- Make views stateful to allow persistence and retrieval
- Auto-generate Event's
message_id - Support pickling of Protean exceptions
- Bugfix - Fetch view objects instead of simply IDs in
cache.get_all() - Bugfix - Generate embedded ValueObject's data properly in
to_dict() - Bugfix - Derive SQLAlchemy field types correctly for embedded value object fields
- Python
Published by subhashb over 4 years ago
protean - v0.7.0
- Simplify Container structure and refactor metaclass usage
- Migrate data elements to inherit from
BaseContainer - Remove
meta_fields and use module functions - Resolve associated classes dynamically and on domain activation
- Remove custom
Metaclass containers and replace withOptions
- Python
Published by subhashb over 4 years ago
protean - v0.6.0
- Introduce Async Standalone Server
- Add all() method to repository
- Introduce Cache Port into Protean
- Introduce View elements into Protean
- Add support for add* and remove* methods for HasMany relationships
- Enhance Entity.to_dict() to output fully-formed JSON
- Fix HasOne issue with updating an item
- Fix HasMany issue with updating items within UnitOfWork
- Refactor ContainerMeta class to be generic for all elements
- Introduce Makefile with useful test/development commands
- Remove order_by from EntityMeta options
- Validate for Repository's database meta value
- Make ValueObject's aggregate linkage optional
- Allow specifying associations with simple Class Names (instead of FQDNs)
- Refactor field class and remove unnecessary attributes (value, label)
- Validate for unique values on saving Entities
- Introduce Docker Compose for all services
- Upgrade SQLAlchemy to support >=1.4.9
- Upgrade to Elasticsearch 7.13.0
- Support case-insensitive match in Elasticsearch
- Ensure compatibility from 3.7 to 3.10
- Migrate to Github Actions from Travis
- Python
Published by subhashb over 4 years ago
protean - v0.5.5
- Introduce Views (a.k.a Read Models)
- Refactor Domain Module to be leaner
- Introduce Class Factories for all Domain Elements
- Rename
impltoadapters - Add separate
portsmodule with interfaces - Remove
bounded_contextdefinition everywhere - Rename
dict_repotomemory - Remove
*_repofrom DB adapter module names - Rename
celeryandinlinebroker module names - Rename
sendgridemail module name
- Python
Published by subhashb over 5 years ago
protean - v0.5.4
- Add support to restrict a model to a specific database
- Add support for optional pickling of
Listfields (leverage Postgres List support) - Add support for Overlap operator in SQLAlchemy repo for Postgresql
- Bugfix - Return keys as Strings for
Dictfield - Add support for storing Array of dictionaries in Postgres JSON column
- Bugfix - Validate unique constraints in Dictionary repo
- Bugfix - Fix broken Entity construction from Elasticsearch model
- Python
Published by subhashb over 5 years ago
protean - v0.5.1
- Log Protean exceptions to print helpful debug messages
- Support for installation of optional dependencies
- Remove support for Data Transfer Object
- Remove support for Request and Response Objects
- Bugfix - Throw Exceptions on Unit of Work commit failures
- Use
blackas code formatter with a git pre-commit hook - Add 3.9 to test matrix and cleanup Travis.yml
- Bugfix - Fix broken Sphinx docs build
- Python
Published by subhashb over 5 years ago
protean - v0.5.0
- Add support for using Celery as the background worker
- Allow persisting and management of child entities via the Aggregate object
- Add support for Dict serialization
- Store Reference and Value Object fields in
Entity.meta_for later use - Allow Subscribers and Handlers to hook into multiple Domain Events
- Raise
InvalidDataErroron invalid attributes to Commands - Treat meta attributes like autofields and mandatoryfields as dictionaries instead of tuples
- Add support for nested serializers/schemas with Marshmallow
- Bugfix #304 - Remove shadow object linkages with aggregates
- Bugfix to not link shadow fields with Aggregate/Entity classes directly
- Bugfix to set initialize Shadow (Reference) and Value Object attributes correctly
- Bugfix to avoid fetching child records without foreign key linkages
- Python
Published by subhashb almost 6 years ago
protean - v0.4.0
Changes:
- Add support for referencing embedded fields with a defined name
- Fix to allow default=False on Boolean fields and subsequent filtering for False in field values
- Fix to use Entity attributes to derive field names of unique fields, instead of declared_fields
- Add support for logging events into a universal EventLog table before publishing to brokers
- Add support for custom models associated with Aggregates/Entities
- Use Elasticsearch specific List and Dict attributes to reconstruct entity
- Bugfix - Verify that ValueField object is not empty before trying to access its attributes
- Bugfix - Fix how Elasticsearch connection is fetched while resetting data
- Python
Published by subhashb almost 6 years ago
protean - v0.3.0
- Add a
defaultsmethod as part of Container objects when assigned defaults in one field based on another - Add support for Command Handlers
- Avoid raising
ValidationErrorwhen loading data from data stores - Add support for Elasticsearch as a repository
- Add support for using Redis as a broker with RQ background workers
- Python
Published by subhashb over 6 years ago
protean - v0.2.0
- 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
- Python
Published by subhashb over 6 years ago
protean - v0.1.0
- Full revamp of Protean codebase to adhere to DDD principles
- Add
DomainComposition 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
successflag on Response tois_successful - Rename
messageattribute in Response object toerrorswith a uniform structure in all error cases
- Python
Published by subhashb over 6 years ago
protean - v0.0.11
- Rename Repository abstract methods to be public (Ex. createobject → 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 presave and postsave 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
- Python
Published by subhashb almost 7 years ago
protean - v0.0.10
- Support for chained
updateanddeletemethods on QuerySet - Support for
update_allmethod for mass updates on objects - Support for
delete_allmethod for mass deletion of objects - Rename databases configuration key in Config file from
REPOSITORIEStoDATABASES - Fully expand the Provider class in the configuration file, to avoid assuming a Provider class name
- Split
Adapterclass intoProviderandRepository, separating the concern of managing the database connection from performing CRUD operations on Entity data - Expose configured databases as
providersglobal variable - Allow fetching new connection on demand of a new repository object via
get_connectioninproviders - Rename
Lookupclass toBaseLookup - 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_modelmethod in the concrete Provider class - Add support for Entity Namespacing
- Refactor Repository Factory for better consistency of registry
- Python
Published by subhashb almost 7 years ago
protean -
- 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
- Python
Published by abhishek-ram almost 7 years ago
protean -
Repository rewritten from the ground up
- Python
Published by abhishek-ram about 7 years ago