Recent Releases of protean

protean - v0.14.2

What's Changed

  • Refactor entity and model conversion methods to utilize referenced_as attributes by @subhashb in https://github.com/proteanhq/protean/pull/605

Full Changelog: https://github.com/proteanhq/protean/compare/v0.14.1...v0.14.2

- Python
Published by subhashb 6 months ago

protean - v0.14.1

What's Changed

  • Support schema in MSSQL conn string by @subhashb in https://github.com/proteanhq/protean/pull/600

Full Changelog: https://github.com/proteanhq/protean/compare/v0.14.0...v0.14.1

- Python
Published by subhashb 6 months ago

protean - v0.14.0

What's Changed

  • Subscription enhancements and robustness
  • Rename model to database_model and view to projection
  • Introduce projector domain 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 model to database_model by @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.1

  • Keep server running by gracefully logging exceptions

- Python
Published by subhashb 9 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.clone method 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 Options to subclass dict by @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 shell command 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-material by @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 ruff by @subhashb in https://github.com/proteanhq/protean/pull/411
  • Enhance support for different identity types in Identifier field 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 List of 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 Meta class 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-db service 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.10.0

  • Enhance domain.init as the way to activate a domain
  • Introduce a new test category WITH_COVERAGE and use in Github Actions
  • Remove dynamic initializations in providers, brokers, caches, and event stores

- Python
Published by subhashb over 2 years ago

protean - v0.8.2

  • Add MultiTenancy support

- Python
Published by subhashb over 2 years ago

protean - v0.9.1

  • Bugfix - Use Domain's EventStore connection details for clearing events after test runs

- Python
Published by subhashb almost 4 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 remove method 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 autoflake to pre-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 any filter and allow scalar values to in operator in Memory DB

- Python
Published by subhashb about 4 years ago

protean - v0.8.1

  • Allow custom separator in Elasticsearch namespaces

- Python
Published by subhashb about 4 years ago

protean - v0.8.0

  • Move fields module to be under main package
  • Allow List fields to contain Dict objects
  • 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.1

  • Allow pickling of exceptions (needed by Celery)

- 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 Meta class containers and replace with Options

- Python
Published by subhashb over 4 years ago

protean - v0.6.2

  • Bugfixes for protean start command
  • Use _entity as the field identifier for Element-level errors

- Python
Published by subhashb over 4 years ago

protean - v0.6.1

  • Fix to adapt celery broker to new message payload format

- 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.8

  • Fix Issue with timestamps in EventLog

- Python
Published by subhashb over 5 years ago

protean - v0.5.7

  • Add support for locking a custom repository to a specific database
  • Add support for use_ssl and verify_certs options in Elasticsearch database definition

- Python
Published by subhashb over 5 years ago

protean - v0.5.6

  • Lock down celery to 4.4.x version
  • Re-Add support for restricting model to a specific database

- Python
Published by subhashb over 5 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 impl to adapters
  • Add separate ports module with interfaces
  • Remove bounded_context definition everywhere
  • Rename dict_repo to memory
  • Remove *_repo from DB adapter module names
  • Rename celery and inline broker module names
  • Rename sendgrid email 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 List fields (leverage Postgres List support)
  • Add support for Overlap operator in SQLAlchemy repo for Postgresql
  • Bugfix - Return keys as Strings for Dict field
  • 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.3

  • Allow Postgres Models to choose b/w Pickle or Custom Types for Array and JSON
  • Add support for Any operator/lookup for Postgres

- Python
Published by subhashb over 5 years ago

protean - v0.5.2

  • Introduce support for Postgresql Array and JSON columns
  • Allow restricting List datatype to specific content types

- Python
Published by advishnuprasad 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 black as 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 InvalidDataError on 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.2

  • Support for auto-traversal of domain modules and loading domain elements

- Python
Published by subhashb over 6 years ago

protean - v0.3.0

  • 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

- 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 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

- 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 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 the 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 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 - v0.0.9

  • Reorganization of Entity Tests
  • Minor fixes for usability (discovered during SQLAlchemy plugin port)

- 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

protean -

- Python
Published by subhashb over 7 years ago