Minos Python Versions Save

🐍 Minos is a framework which helps you create reactive microservices in Python

v0.6.0

2 years ago

Changelog

minos-microservice-aggregate

  • Replace dependency-injector's injection classes by the ones provided by the minos.common.injections module.
  • Be compatible with latest minos.common.Config API.

minos-microservice-common

  • Add Config with support for config versioning.
  • Add ConfigV1 as the class that supports the V1 config file.
  • Add ConfigV2 as the class that supports the V1 config file.
  • Deprecate MinosConfig in favor of Config.
  • Add get_internal_modules function.
  • Add Injectable decorator to provide a way to set a class as injectable.
  • Add InjectableMixin class that provides the necessary methods to be injectable.
  • Add Inject decorator to provide a way to inject variables on functions based on types.
  • Add LockPool base class as the base class for lock pools.
  • Add Object base class with the purpose to avoid issues related with multi-inheritance and mixins.
  • Add Port base class as the base class for ports.
  • Add CircuitBreakerMixin class to provide circuit breaker functionalities.
  • Add SetupMixin class as a replacement of the MinosSetup class.

minos-microservice-cqrs

  • Replace dependency-injector's injection classes by the ones provided by the minos.common.injections module.
  • Be compatible with latest minos.common.Config API.

minos-microservice-networks

  • Add BrokerPort class and deprecate BrokerHandlerService.
  • Add BrokerPublisherBuilder to ease the building of BrokerPublisher instances.
  • Add FilteredBrokerSubscriber implemented as a Chain-of-Responsibility Design Pattern to be able to filter BrokerMessage instances during subscription.
  • Add BrokerSubscriberValidator and BrokerSubscriberDuplicateValidator base classes and the InMemoryBrokerSubscriberDuplicateValidator and PostgreSqlBrokerSubscriberDuplicateValidator implementations.
  • Rename EnrouteAnalyzer as EnrouteCollector.
  • Rename EnrouteBuilder as EnrouteFactory.
  • Add HttpEnrouteDecorator.
  • Remove KongDiscoveryClient class (there are plans to re-include it as an external plugin in the future).
  • Add HttpConnector as the base class that connects to the http server.
  • Add HttpAdapter as the class that coordinates HttpRouter instances.
  • Add HttpPort class and deprecate RestService.
  • Add HttpRequest, HttpResponse and HttpResponseException as request/response wrappers of the http server.
  • Add Router, HttpRouter, RestHttpRouter, BrokerRouter and PeriodicRouter as the classes that route requests to the corresponding services' handling functions
  • Add PeriodicPort class and deprecate PeriodicTaskSchedulerService.
  • Add CronTab class to support "@reboot" pattern.
  • Add OpenAPIService and AsynAPIService classes as the services that provide openapi and asynciapi specifications of the microservice.
  • Add SystemService as the service that implements System Health checker.
  • Replace dependency-injector's injection classes by the ones provided by the minos.common.injections module.
  • Be compatible with latest minos.common.Config API.

minos-microservice-saga

  • Replace dependency-injector's injection classes by the ones provided by the minos.common.injections module.
  • Be compatible with latest minos.common.Config API.

minos-broker-kafka

  • Add KafkaCircuitBreakerMixin to integrate minos.common.CircuitBreakerMixin into the KafkaBrokerPublisher and KafkaBrokerSubscriber classes to be tolerant to connection failures to kafka.
  • Add KafkaBrokerPublisherBuilder and KafkaBrokerBuilderMixin classes to ease the building process.

minos-broker-rabbitmq

  • Add RabbitMQBrokerPublisher as the implementation of the rabbitmq publisher.
  • Add RabbitMQBrokerSubscriber as the implementation of the rabbitmq subscriber.
  • Add RabbitMQBrokerPublisherBuilder, RabbitMQBrokerSubscriberBuilder and RabbitMQBrokerBuilderMixin classes to ease the building process.

minos-discovery-minos

  • Integrate minos.common.CircuitBreakerMixin into the MinosDiscoveryClient to be tolerant to connection failures to minos-discovery.

minos-http-aiohttp

  • Add AioHttpConnector as the implementation of the aiohttp server.
  • Add AioHttpRequest, AioHttpResponse and AioHttpResponseException classes as the request/response wrappers for aiohttp.

minos-router-graphql

  • Add GraphQLSchemaBuilder to build the graphql's schema.
  • Add GraphQlHandler class to handle graphql requests.
  • Add GraphQlHttpRouter class to route http request to graphql.
  • Add GraphQlEnroute, GraphQlEnrouteDecorator, GraphQlCommandEnrouteDecorator and GraphQlQueryEnrouteDecorator decorators.

Update Guide

From 0.5.x

  • Add @Injectable decorator to classes that injections:
from minos.common import Injectable


@Injectable("THE_INJECTION_NAME")
class MyInjectableClass:
  ...
  • Add minos-http-aiohttp package:
poetry add minos-http-aiohttp@^0.6
  • Add HttpConnector instance to service.injections section of config.yml file:
...
service:
  injections:
    http_connector: minos.plugins.aiohttp.AioHttpConnector
    ...
  ...
...
  • Add routers section to config.yml file:
...
routers:
  - minos.networks.BrokerRouter
  - minos.networks.PeriodicRouter
  - minos.networks.RestHttpRouter
...
  • Update minos.common.Config usages according to the new provided API:
    • Most common issues come from calls like config.query_repository._asdict(), that must be transformed to config.get_database_by_name("query")

v0.5.4

2 years ago

Changelog

minos-microservice-aggregate

  • Fix bug related with Ref.resolve.
  • Add RefResolver.build_topic_name static method.
  • Remove SnapshotService.__get_one__ method.
  • Minor changes.

v0.5.3

2 years ago

Changelog

minos-microservice-aggregate

  • Add RefException to be raised when some reference cannot be resolved.
  • Improve attribute and item accessors of Ref, Event and FieldDiffContainer
  • Deprecate Event.get_one in favor of Event.get_field.
  • Deprecate Event.get_all in favor of Event.get_fields.

minos-microservice-common

  • Big performance improvement related with a caching layer over type hint comparisons at TypeHintComparator.
  • Improve attribute and item accessors of Model.
  • Fix bug related with casting from dict to Model instances on field setters.

minos-microservice-cqrs

  • Update the resolve_references: bool default value to False defined at PreEventHandler.handle.
  • Improve error messages of PreEventHandler.

minos-microservice-networks

  • Improve error messages of BrokerDispatcher, RestHandler and PeriodicTask.

minos-microservice-saga

  • Improve attribute and item accessors of SagaContext.

v0.5.2

2 years ago

Changelog

minos-microservice-aggregate

  • Add Condition.LIKE operator to be used with the find method from SnapshotRepository.
  • Add get_all method to RootEntity and SnapshotRepository to get all the stored instance on the repository.
  • Rename SnapshotService command topics to avoid collisions with application-level topics.
  • Rename TransactionService command topics to avoid collisions with application-level topics.
  • Minor changes.

minos-microservice-common

  • Add query_repository section to MinosConfig.
  • Minor changes.

minos-microservice-networks

  • Fix bug related with enroute decorator collisions in which the MinosRedefinedEnrouteDecoratorException was not raised.
  • Minor changes.

minos-microservice-saga

  • Add compatibility to minos-microservice-aggregate~=0.5.2.
  • Minor changes.

v0.5.1

2 years ago

Changelog

minos-microservice-aggregate

  • Fix bug related with dependency specification.

minos-microservice-cqrs

  • Fix bug related with dependency specification.

minos-microservice-networks

  • Fix bug related with dependency specification.

minos-microservice-saga

  • Fix bug related with dependency specification.

minos-broker-kafka

  • Fix bug related with dependency specification.

minos-discovery-minos

  • Fix bug related with dependency specification.

v0.5.0

2 years ago

Changelog

minos-microservice-aggregate

  • Rename Aggregate as RootEntity.
  • Rename AggregateRef as ExternalEntity.
  • Rename ModelRef as Ref.
  • Rename AggregateDiff as Event.
  • Create the Aggregate base class, with the purpose to move the business logic from the minos.cqrs.CommandService to this brand-new class.
  • Refactor internal module hierarchy.
  • Minor changes.

minos-microservice-common

  • Minor changes.

minos-microservice-cqrs

  • Minor changes.

minos-microservice-networks

  • Extract kafka related code to the minos-broker-kafka plugin.
  • Extract minos-discovery related code to the minos-discovery-minos plugin.
  • Minor changes.

minos-microservice-saga

  • Minor changes.

minos-broker-kafka

  • Migrate PostgreSqlQueuedKafkaBrokerPublisher from minos-microservice-networks.
  • Migrate InMemoryQueuedKafkaBrokerPublisher from minos-microservice-networks.
  • Migrate KafkaBrokerPublisher from minos-microservice-networks.
  • Migrate KafkaBrokerSubscriber from minos-microservice-networks.
  • Migrate KafkaBrokerSubscriberBuilder from minos-microservice-networks.
  • Migrate PostgreSqlQueuedKafkaBrokerSubscriberBuilder from minos-microservice-networks.
  • Migrate InMemoryQueuedKafkaBrokerSubscriberBuilder from minos-microservice-networks.
  • Minor changes.

minos-discovery-minos

  • Migrate MinosDiscoveryClient from minos-microservice-networks.
  • Minor changes.

v0.4.1

2 years ago

Changelog

minos-microservice-aggregate

  • Update README.md.

minos-microservice-common

  • Update README.md.

minos-microservice-cqrs

  • Update README.md.

minos-microservice-networks

  • Update README.md.

minos-microservice-saga

  • Update README.md.

v0.4.0

2 years ago

Changelog

minos-microservice-aggregate

  • Be compatible with minos-microservice-common~=0.4.0.
  • Be compatible with minos-microservice-networks~=0.4.0.

minos-microservice-common

  • Add waiting time before destroying the minos.common.MinosPool acquired instances.

minos-microservice-cqrs

  • Be compatible with minos-microservice-common~=0.4.0.
  • Be compatible with minos-microservice-aggregate~=0.4.0.
  • Be compatible with minos-microservice-networks~=0.4.0.

minos-microservice-networks

  • Add BrokerDispatcher to break the direct relationship between BrokerHandler and BrokerPublisher.
  • Add content_type argument to RestResponse's constructor to be able to retrieve the result in a format other than json.
  • Add versioning to BrokerMessage and implement the BrokerMessageV1 and BrokerMessageV1Payload to be able to work with different microservice versions in the future.
  • Refactor BrokerPublisher.send method to follow the (message: BrokerMessage) -> None prototype instead of a big list of arguments referred to the messages attributes.
  • Refactor brokers.publishers module.
    • Add BrokerPublisher base class with a send(message: BrokerMessage) -> Awaitable[None] method.
    • Add BrokerPublisherQueue base class with an enqueue(message: BrokerMessage) -> Awaitable[None] and a dequeue() -> Awaitable[BrokerMessage] methods.
    • Add KafkaBrokerPublisher as the kafka's implementation of the publisher.
    • Add PostgreSqlBrokerPublisherQueue as the postgres implementation of the publisher's message queue.
  • Refactor brokers.handlers.
    • Add BrokerSubscriber base class with a receive() -> Awaitable[BrokerMessage] method.
    • Add BrokerSubscriberQueue base class with an enqueue(message: BrokerMessage) -> Awaitable[None] and a dequeue() -> Awaitable[BrokerMessage] methods.
    • Add KafkaBrokerSubscriber as the kafka's implementation of the subscriber.
    • Add PostgreSqlBrokerSubscriberQueue as the postgres implementation of the subscriber's message queue.
  • Refactor DynamicBroker and DynamicBrokerPool as BrokerClient and BrokerClientPool. The new BrokerClient has a send(message: BrokerMessage) -> Awaitable[None] method for sending messages and a receive() -> Awaitable[BrokerMessage] to receive them.
  • Implement a builder pattern on BrokerPublisher
  • Be compatible with minos-microservice-common~=0.4.0.

minos-microservice-saga

  • Be compatible with minos-microservice-common~=0.4.0.
  • Be compatible with minos-microservice-aggregate~=0.4.0.
  • Be compatible with minos-microservice-networks~=0.4.0.